1 일 또는 24 시간 이전의 특정 디렉토리에 파일 나열 및 사용 설명서를 읽었습니다. 찾아라.

나는 내가 선택할 수있는 특정 디렉토리에서 24 시간 오래된 파일을 나열하려고하는 간단한 스크립트를 파이썬으로 작성하려고합니다.

찾기 및 사용 설명서를 읽었습니다.

찾아라. – 시간 1 & gt; log.dat

그러나 log.dat에있는 파일 목록을 얻으려면 해당 목록의 경로 정보도 얻습니다.

./hpc06MatlabCodes/2011/Apr/3dBoxModel
./hpc06MatlabCodes/2011/Apr/3dBoxModel/vfluidIrca10.dat
./hpc06MatlabCodes/2011/Apr/3dBoxModel/vLRecoveredSystem.mat

디렉토리를 제외하고 파일 목록 만 가져 오는 방법이 있습니까?
인사말,
Umut



답변

찾을 ‘-type of’플래그를 추가하십시오.

$ find . -type f -a -mtime 1 > log.dat

(그만큼 -a ‘and’입니다. – 기본 연결입니다.하지만 나중에 어떤 점에서 기본값이 변경 될 경우에 대비하고 싶습니다.)


답변

이후 당신이 파이썬 일을하고있다, 내가 사용하는 것입니다 :

def get_old_files(topdir, howold=24*3600):
    import os, time
    now = time.time()
    filelist = []
    def traverse_links(filename):
        if not os.path.islink(filename):
            return filename
        return traverse_links(os.path.normpath(
                    os.path.join(os.path.dirname(filename), os.readlink(filename)))))
    for dirpath, dirnames, filenames in os.walk(topdir):
        for name in [traverse_links(os.path.join(dirpath, f)) for f in filenames]:
            try:
                if os.path.isfile(name) and now - os.path.getmtime(name) > howold:
                    filelist.append(name)
            except OSError:
                pass # ignore bad symlinks
    return filelist

이렇게하면 원하는 것을 할 수 있습니다. 디렉토리를 줄이는 선택적 인수를 추가 할 수도 있습니다. 이것을 호출하는 것의 이점 find 프로세스 내부에서 모든 작업을 수행하는 것과 달리 새 프로세스를 생성하는 데 소요되는 추가 오버 헤드입니다.


답변