다음 명령이 /var 아래의 tmp 디렉터리를 삭제하는 이유는 무엇이며 이를 방지하는 방법은 무엇입니까?
find /var/tmp -type d -ctime -1 -exec rm -rf {} \;
pwd
/var/tmp
[root@linux /var/tmp]# find /var/tmp -type d -ctime -1 -exec rm -rf {} \;
find: /var/tmp: No such file or directory
답변1
발견된 첫 번째 디렉토리 find /var/tmp
는 입니다 /var/tmp
. 해당 명령을 건너뛰고 Gnu를 사용하려면 find
명령을 다음과 같이 변경할 수 있습니다.
find /var/tmp -depth -mindepth 1 -type d -ctime -1 -exec rm -rf {} \;
또는
find /var/tmp -mindepth 1 -type d -ctime -1 -exec rm -rf {} \; -prune
아니오 -depth
, 하위 디렉토리 삭제 -prune
로 인해 오류 메시지가 나타날 수 있습니다. rm -rf
- 본 적이 있을 수 있습니다 find
. 하위 디렉터리가 먼저 호출되도록 -depth
합니다 . rm -r
그러나 하위 트리당 한 번만 실행하면 rm -rf
충분하므로 -prune
.
답변2
논리 NOT 연산자를 사용 !
하거나 -not
/var/tmp 경로를 결과에서 제외합니다. 참고: -not
POSIX와 호환되지 않습니다.
find /var/tmp -type d -ctime -1 ! -path /var/tmp -exec rm -rf {} \;
또는
find /var/tmp -type d -ctime -1 -not -path /var/tmp -exec rm -rf {} \;