예외 파일에 있는 파일을 제외하고 디렉터리에서 오래된 파일을 삭제합니다.

예외 파일에 있는 파일을 제외하고 디렉터리에서 오래된 파일을 삭제합니다.

다른 디렉터리에 있는 특이한 파일에 이름이 저장된 몇 가지 파일을 제외하고 디렉터리에서 오래된 파일(60일 이상)을 삭제하는 쉘 스크립트를 작성 중입니다.

다음 명령이 하나의 예외 파일에 대해 작동한다는 것을 알고 있지만 예외 파일 목록을 확인해야 합니다.

find . ! -name 'file.txt' -type f -exec rm -f {} +

답변1

파일 이름이 일반 이름(예: 줄 바꿈 문자가 포함되어 있지 않음)이라고 가정하면 다음과 같이 작동합니다.

find . -mtime +60 | fgrep -v -x -f exceptions.txt | xargs -d '\n' rm -f

먼저 드라이 런을 수행 rm -f하여 교체하십시오. 인쇄물 ls -1과 동일하게 경로를 배치하십시오 .findexceptions.txt

답변2

그런 옵션 이 없다고 생각합니다 . 제외 목록 빌드 명령을 find사용할 수 있습니다 .printf

find . -name "*.txt" $(printf "! -name %s " $(cat file.txt)) -mtime +60 -exec rm -f {} +

file.txtfind명령에서 제외할 파일 목록이 있습니다.

관련 정보