linux + rm -rf를 사용하여 명령을 찾습니다.

linux + rm -rf를 사용하여 명령을 찾습니다.

다음 명령이 /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 경로를 결과에서 제외합니다. 참고: -notPOSIX와 호환되지 않습니다.

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 {} \;

관련 정보