![1일이 지난 파일 또는 디렉터리를 삭제하는 중에 오류가 발생했습니다.](https://linux55.com/image/11989/1%EC%9D%BC%EC%9D%B4%20%EC%A7%80%EB%82%9C%20%ED%8C%8C%EC%9D%BC%20%EB%98%90%EB%8A%94%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EC%A4%91%EC%97%90%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
다음 명령을 사용하여 1일보다 오래된 파일이나 디렉터리를 삭제할 수 있습니다.
find /u01/Release/* -mtime +1 -exec rm -r {} \;
그런데 이 명령의 출력에 오류가 발생하는 이유는 무엇입니까?
ls -lrt
drwxr-xr-x 3 tomcat8 tomcat8 60 Oct 4 07:11 build_180
drwxrwxr-x 6 root root 309 Sep 21 2017 redis-3.2.11
-rw-r--r-- 1 root root 1550452 Oct 4 15:23 redis-3.2.11.tar.gz
find: ‘/u01/Release/redis-3.2.11’: No such file or directory
명령을 실행한 후
ls -lrt
drwxr-xr-x 3 tomcat8 tomcat8 60 Oct 4 07:11 build_180
-rw-r--r-- 1 root root 1550452 Oct 4 15:23 redis-3.2.11.tar.gz
답변1
이것은 잘 알려진 문제입니다. 문제는 find
먼저 디렉터리를 삭제한 다음 디렉터리에 있는 파일을 처리하려고 하는 것입니다. 해결 방법은 먼저 디렉터리의 내용을 처리한 다음 디렉터리를 삭제하는 것입니다. 이것이 -depth
바로 옵션입니다.
find /u01/Release/* -depth -mtime +1 -exec rm -r {} \;
그러면 문제가 해결될 것입니다. 더 짧은 형식의 연산 -delete
(즉 -depth
, )을 사용하는 데 관심이 있을 수도 있습니다.
find /u01/Release/* -mtime +1 -delete
언제나처럼 man find
당신의 친구 .
답변2
--force
아래 방법을 시도해 보세요. 파일과 디렉터리를 삭제하는 데 사용하는 것이 가장 좋습니다 .
find /u01/Release/* -mtime +1 -exec rm -rf {} \;
-r, -R, --recursive
remove directories and their contents recursively
-f, --force
ignore nonexistent files, never prompt