내 프로세스 중 하나에서는 파일이 31일보다 오래되었는지 확인한 다음 처리합니다.
find /my/directory/*txt -mtime +31 -exec ls -l {} \;
파일이 다음 위치에 있으면 괜찮지 /my/directory/
만 파일이 존재하지 않으면 오류가 발생합니다.
find: `/my/directory/*txt': No such file or directory
내가 발행하는 경우:
touch /my/directory/a_new_file.txt
그리고 같은 명령을 다시 실행하세요.
find /my/directory/*txt -mtime +31 -exec ls -l {} \;
오류가 없습니다.
파일을 사용하기 전에 해당 파일이 디렉터리에 있는지 확인할 수 있는 방법이 있습니까?
답변1
그런 일은 일어나지 않았습니다 find
. 첫 번째 매개변수는 검색할 디렉터리(또는 개별 파일 이름)입니다. 패턴을 주고 싶다면 -name
또는 -iname
유사한 -regex
옵션을 사용해야 합니다. 예를 들어:
find /my/directory/ -name "*txt" -mtime +31 -ls
또한 동일한 작업을 보다 효율적으로 수행하는 찾기 옵션을 -exec ls {} \;
사용하도록 변경했습니다 .-ls
확인할 수 있는 유일한 방법은 둘 ls
중 하나를 먼저 실행하는 것인데 find
, 완전히 무해한 오류 메시지를 피하기에는 어리석은 것처럼 보입니다.
필요한 경우 다음을 사용하여 디렉터리 없이 일반 파일을 찾도록 지정할 수도 있습니다 -type
.
find /my/directory/ -type f -name "*txt" -mtime +31 -ls
.txt
그러면 하위 디렉터리의 파일을 포함한 모든 파일이 검색됩니다 /my/directory
. 원하는 것이 아닌 경우 최대 깊이를 지정하세요.
find /my/directory/ -maxdepth 1 -type f -name "*txt" -mtime +31 -ls