파일을 작업하기 전에 파일이 존재하는지 확인하십시오.

파일을 작업하기 전에 파일이 존재하는지 확인하십시오.

내 프로세스 중 하나에서는 파일이 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

관련 정보