파일 이름 부분을 텍스트 파일과 일치시키고 그에 따라 삭제하는 가장 효율적인 방법은 무엇입니까?

파일 이름 부분을 텍스트 파일과 일치시키고 그에 따라 삭제하는 가장 효율적인 방법은 무엇입니까?

다음과 같은 약 1000개의 항목이 포함된 파일이 있습니다.

...
U9FzgsF2T-s
...

기본적으로 YouTube 동영상 ID입니다. 그런 다음 다음 이름을 가진 비디오로 가득 찬 폴더가 있습니다.

007  - James Bond  - Theme-U9FzgsF2T-s.opus

이제 텍스트 파일의 항목과 부분적으로 일치하지 않는 폴더의 모든 파일을 삭제하고 싶습니다(물론 삭제할 수 없는 텍스트 파일 제외).

이를 수행하는 우아한 방법이 있습니까? 모든 파일을 반복하여 나열되어 있는지 확인할 수 있지만 항목이 1000개 이상 증가하면 특히 스크립트가 몇 분마다 실행되기 때문에 시간이 많이 걸릴 것입니다. 그렇다면 어떻게 하면 효율적으로 이를 수행할 수 있을까요? 기본적으로 폴더의 항목과 부분적으로 일치하지 않는 모든 파일을 삭제하시겠습니까?

답변1

어쩌면 grep -vid-list의 문자열에 대한 파일 목록일 수도 있습니다. 그것은 다음과 같습니다:

printf '%s\0' * | grep -zvF -e ID-LIST -f ID-LIST | xargs -0 echo
  • 파일을 삭제하려면 echo다음으로 바꾸세요 .rm

관련 정보