'찾기'를 사용하여 특정 날짜에 작성된 파일을 검색하려면 어떻게 해야 합니까?
UNIX 방법find
특정 날짜에 작성된 파일을 검색할 수 있습니까?
Max가 지적한 바와 같이 할 수 없지만 수정 또는 액세스된 파일을 확인하는 것은 그리 어렵지 않습니다.제가 오늘까지 튜토리얼을 썼거든요.그 본질은 사용법이다.-newerXY
★★★★★★★★★★★★★★★★★」! -newerXY
:
예:2007년 6월 7일에 수정된 모든 파일을 찾으려면:
$ find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08
2008년 9월 29일에 액세스 된 모든 파일을 검색하려면:
$ find . -type f -newerat 2008-09-29 ! -newerat 2008-09-30
또는 같은 날 권한이 변경된 파일:
$ find . -type f -newerct 2008-09-29 ! -newerct 2008-09-30
그러나 파일에 대한 권한을 변경하지 않으면 일반적으로 'c'는 작성 날짜에 해당합니다.
하여 파일 및 합니다./home/
필요에 따라 기간을 추가합니다.
find /home/ -ctime time_period
time_period의 예:
전: 30일 전:
-ctime +30
: 30일 전:
-ctime -30
전 : 정 30일30 일 :
-ctime 30
두 단계지만 이렇게 하는 것이 좋습니다.
먼저 특정 날짜/시간을 가진 파일을 만듭니다.이 경우 파일은 2008-10-01 자정입니다.
touch -t 0810010000 /tmp/t
이제 위의 파일보다 최신 파일 또는 오래된 파일(파일 수정 날짜 기준)을 모두 찾을 수 있습니다.
액세스된 파일 상태 및 변경된 파일 상태에 대해 -anewer를 사용할 수도 있습니다.
find / -newer /tmp/t
find / -not -newer /tmp/t
터치 기능을 사용하여 두 개의 파일을 생성하여 특정 날짜 사이의 파일을 볼 수도 있습니다.
touch -t 0810010000 /tmp/t1
touch -t 0810011000 /tmp/t2
그러면 두 날짜 및 시간 사이의 파일이 검색됩니다.
find / -newer /tmp/t1 -and -not -newer /tmp/t2
다음과 같이 할 수 있습니다.
find ./ -type f -ls |grep '10 Sep'
예:
[root@pbx etc]# find /var/ -type f -ls | grep "Dec 24"
791235 4 -rw-r--r-- 1 root root 29 Dec 24 03:24 /var/lib/prelink/full
798227 288 -rw-r--r-- 1 root root 292323 Dec 24 23:53 /var/log/sa/sar24
797244 320 -rw-r--r-- 1 root root 321300 Dec 24 23:50 /var/log/sa/sa24
그럴수는 없어요.-c 스위치는 권한이 마지막으로 변경된 시간을 알려주고 -a는 최신 액세스 시간을 테스트하며 -m은 수정 시간을 테스트합니다.대부분의 Linux 버전(ext3)에서 사용되는 파일 시스템은 "작성 시간" 레코드를 지원하지 않습니다.미안!
@Max: 작성 시간이 적절합니다.
단, 다음 중 하나에 대해 경과일수를 계산하려면-atime
,-ctime
,-mtime
다음 식을 사용할 수 있습니다.
ELAPSED_DAYS=$(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))
"2008-09-24"를 원하는 날짜로 대체하면 EXCIDS_DAYS가 오늘까지의 일수로 설정됩니다.(갱신: 결과에서 1을 빼서 일치시킵니다.find
의 날짜 반올림).
따라서 2008년 9월 24일에 변경된 파일을 찾으려면 다음 명령을 사용합니다.
find . -type f -mtime $(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))
이것은, 사용의 버전이find
를 지원하지 않습니다.-newerXY
@Arve:의 답변에 기재되어 있는 술어.
-atime, -ctime 및 -mtime 스위치를 검색하면 원하는 수준에 근접할 수 있습니다.
cp `ls -ltr | grep 'Jun 14' | perl -wne 's/^.*\s+(\S+)$/$1/; print $1 . "\n";'` /some_destination_dir
14일보다 오래된 파일을 모두 삭제하는 스크립트에서 다음 스크립트를 찾았습니다.
CNT=0
for i in $(find -type f -ctime +14); do
((CNT = CNT + 1))
echo -n "." >> $PROGRESS
rm -f $i
done
echo deleted $CNT files, done at $(date "+%H:%M:%S") >> $LOG
"man find"를 조금 더 추가하여 -ctime / -atime 등의 파라미터를 찾는 것이 도움이 될 것입니다.
언급URL : https://stackoverflow.com/questions/158044/how-to-use-find-to-search-for-files-created-on-a-specific-date
'source' 카테고리의 다른 글
MS Word 테이블을 Excel 시트로 내보내기 위한 매크로 (0) | 2023.04.19 |
---|---|
Swift: 스위치 문의 테스트 클래스 유형 (0) | 2023.04.19 |
컴퓨터가 시작될 때 PowerShell 스크립트를 실행하는 방법은 무엇입니까? (0) | 2023.04.19 |
글로벌 변수 작성 방법 (0) | 2023.04.19 |
WPF와 Silverlight의 비교 (0) | 2023.04.19 |