콘텐츠에 내 문자열이 포함된 폴더 이름과 파일 이름을 찾아야 합니다. 나는 이 디렉토리 " /data/queue/data
"에 있고 같은 디렉토리에 많은 폴더가 있고 각 폴더에는 다양한 파일이 있습니다.
다음은 " " 디렉토리에 있는 폴더이며 /data/queue/data
, 각 폴더에는 다양한 파일이 포함되어 있습니다.
david@machineA:/data/queue/data$ ls -lrth
drwxr-xr-x 2 david david 12K Apr 11 18:58 1428800400
drwxr-xr-x 2 david david 12K Apr 11 19:58 1428804000
drwxr-xr-x 2 david david 12K Apr 11 20:58 1428807600
이 디렉토리에서 - " " 명령을 실행하고 싶지만 /data/queue/data
타임스탬프가 있는 폴더 내의 파일만 찾아야 합니다 April 13th 3 AM to April 13th 9 AM
.
April 13th 3 AM to April 13th 9 AM
다음은 내 명령입니다. 이 명령은 모든 폴더 내의 파일을 재귀적으로 찾습니다. 그러나 폴더 내의 파일 만 찾도록 하려면 어떻게 해야 합니까 ?
david@machineA:/data/queue/data$ grep -rl "pcV6URY" /data/queue/data
이를 수행하는 가장 좋은 방법은 무엇입니까?
답변1
이 시도:
touch -d"April 13 3 AM" file1
touch -d"April 13 9 AM" file2
find . -newer file1 ! -newer file2 -exec grep -l "pcV6URY" {} +
rm file1 file2
어떻게 작동하나요?
find
시간은 직접 처리할 수 있지만 touch
인간 스타일의 날짜는 더 잘 처리할 수 있습니다.
touch -d"April 13 3 AM" file1; touch -d"April 13 9 AM" file2
그러면 시간 범위의 시작과 끝을 표시하는 두 개의 파일이 생성됩니다.
find . -newer file1 ! -newer file2 -exec grep -l "pcV6URY" {} +
file1
그러면 최신이지만 최신이 아닌 파일이 검색됩니다file2
. 이러한 모든 파일에 대해grep
실행되어 해당 파일에 문자열이 포함되어 있는지 확인합니다.