다음 구문을 사용하여 폴더를 삭제할 수 없습니다. 도와주실 수 있나요?
작업: 특정 경로에서 6시간이 지난 파일 및 폴더 삭제
find $file -name "*" -mmin +360 -exec rm -f {}\;
답변1
명령에 2가지 문제가 있습니다.
이 명령은
rm -f dir
이름이 지정된 디렉터리를 삭제하지 않습니다dir
. 이rmdir
명령을 사용하거나 를 사용해야 합니다rm -r dir
.삭제하려면 디렉터리가 비어 있어야 합니다. 파일이 있는 경우
dir1/file1
해당 명령은 먼저dir1
삭제를 시도한 다음(실패함) 삭제를 시도합니다dir1/file1
.rm -r
수정 사항의 두 번째 부분은 간단합니다. -depth
find 명령에 깊이 우선 순서로 파일을 처리하도록 지시하는 플래그를 추가하는 것입니다.
수정의 첫 번째 부분은 더 어렵고 원하는 작업에 따라 다릅니다.
문제는 "주어진 경로에서 6시간이 지난 파일 및 폴더 삭제"라는 문구에 있습니다. dir1
12시간 전에 생성 하고 dir1/file1
11시간 전에 생성했지만 1시간 전에 수정했다면 어떻게 하시겠습니까? 귀하의 설명에서 알 수 있듯이 파일이 추가된 지 11시간 전에 마지막으로 수정되었기 때문에 디렉토리를 삭제하고, 한 시간 전에 수정되었기 때문에 파일을 삭제하려는 것이 아닙니다. 하지만 파일에는 디렉터리가 필요합니다.
내 추측으로는 삭제하려는 것 같습니다.비어 있는마지막으로 수정된 지 6시간 이상 지난 디렉터리입니다. 더 명확하게 하기 위해 여기에 추가 괄호가 있는 명령이 있습니다. 이것이 무엇을 -o
의미하는지 알아야 합니다 or
.
find $file -depth -mmin +360 '(' '(' -type f -exec rm -f '{}' ';' ')' -o \
'(' -type d -empty -exec rmdir {} ';' ')' ')'
귀하의 버전의 find 객체가 -empty
이를 무시하고 비어 있지 않은 디렉토리를 삭제할 수 없다는 오류 메시지를 무시하는 경우.
답변2
찾다/목차-cm 분+분-삭제
이 옵션은 어디에서 사용할 수 있나요?
-cmin
창조의 시간-mmin
시간 변경-amin
입장 시간에 대해
상황에 따라 사용할 수 있으며 올바른 경로를 제공했는지 확인하십시오 /dir
. 그렇지 않으면 전체 운영 체제가 종료될 수 있습니다.