"find home/ -mtime +25 -exec rm -rf {} \; 2> /dev/null" 명령에 대해 설명하세요.

"find home/ -mtime +25 -exec rm -rf {} \; 2> /dev/null" 명령에 대해 설명하세요.
find /home/ -mtime +25 -exec rm -rf {} \; 2> /dev/null

위 명령의 출력은 무엇이며 어떻게 작동합니까?

-exec {} \;명령 내용

답변1

문제의 명령이 다음을 발견했습니다.이름(파일, 디렉터리 또는 기타) /home( /home자체 포함)이 최소 25일 전에 수정된 이름을 삭제합니다. 이름이 디렉터리를 참조하는 경우 전체 디렉터리 트리가 삭제됩니다.

관련된 명령은 표준 출력에 기록되지 않으며 진단 메시지는 로 리디렉션됩니다 /dev/null. find유틸리티가 삭제된 디렉토리를 처리하려고 하면 보이지 않는 오류 메시지가 생성될 수 있습니다. 이를 사용하면 -depth디렉터리 트리가 하향식이 아닌 상향식으로 처리됩니다.

-execfind외부 명령을 호출하는 데 사용됩니다 . {}찾은 이름으로 대체되며 외부 \;명령의 끝을 나타냅니다.


이 명령은 또한재귀적으로 일치 및 /home삭제, 충분히 오래 되었다면. 디렉터리의 수정 타임스탬프는 파일이나 디렉터리만 업데이트합니다.디렉터리 아래의 파일은 추가되거나 제거되므로 지난 25일 이내에 해당 작업을 수행하지 않은 경우 이 명령이 /home해당 내용을 모두 삭제할 것으로 예상됩니다(루트 권한으로 실행하는 경우).

하위 디렉터리에 파일을 추가하거나 제거해도 /home타임스탬프가 업데이트되지 않습니다 /home.

루트가 아닌 권한으로 실행하는 경우 /home현재 사용자에게 속한 모든 파일, 디렉터리 등은 /home해당 사용자 또는 해당 상위 디렉터리(예:)가 충분히 오래된 경우 삭제됩니다.


그냥 삭제하고 싶으시다면일반 파일, 그럼 제안하겠습니다

find /home -type f -mtime +25 -exec rm -f {} +

-type f테스트는 일반 파일만 통과하도록 허용합니다. -exec ... {} +대신 사용하면 -exec ... {} \;가능한 한 적은 수의 호출이 발생한다는 의미입니다 rm(몇 가지 이름이 수집되어 에 전달됩니다 {}).

또는 귀하가 find지원하는 경우 -delete:

find /home -type f -mtime +25 -delete

제거된 내용을 보려면 -print-exec(또는 앞에 -delete)을 삽입하세요. 삭제할 때마다 대화형으로 메시지를 표시하려면 -ok대신 사용하세요 -exec. 이 경우에는 를 사용하지 말고 -delete표준 오류를 로 리디렉션하지 마세요 /dev/null.

답변2

이것은 발견된 패턴에 대해 수행되는 작업입니다.
/home에서 mtime이 25일보다 오래된 모든 파일을 찾은 다음 삭제합니다.

mtime은 24시간 전에 수정된 시간으로, number*24시간입니다.

- 발견된 패턴을 나타내는 {}에서 명령을 실행합니다. & \는 명령 태그의 끝입니다.

관련 정보