폴더에 1백만 개가 넘는 이미지가 있는 정적 자산 서버가 있는데 그 중 대부분은 더 이상 필요하지 않습니다.
.json 파일에 여전히 필요한 파일 이름 목록이 있습니다.
bash에서 파일 이름이 json 목록에 없으면 해당 디렉터리의 모든 파일을 어떻게 삭제합니까?
미리 감사드립니다!
답변1
이러한 파일 이름에 따옴표가 필요하지 않다고 가정합니다(공백 없음, 특수 문자 없음).
$ cat keep.json
["file1.png", "file2.png"]
find -not '(' $(php -r 'echo "-name " . implode(" -o -name ", json_decode(file_get_contents("keep.json")));') ')' -delete
내용을 삭제하려는 폴더에서 명령을 실행하십시오. 없이 실행하면 -delete
일치하는 파일 목록이 삭제되는 대신 표시됩니다.