파일 시스템에서 특정 키워드와 일치하는 파일을 검색한 다음 삭제하려고 합니다. 지금까지 나는 이것을 가지고 있습니다 :
find . -iregex '.*.new.*' -regex '.*.pdf*'
그런 다음 이 명령의 결과를 삭제 명령으로 어떻게 전송할 수 있습니까(예 rm
: )
답변1
한 가지 방법은 파일 목록을 확장하여 rm에 인수로 전달하는 것입니다.
$ rm $(find . -iregex '.*.new.*' -regex '.*.pdf*')
**파일 이름에 공백이나 개행 문자가 포함되어 있으면 실패합니다.
xargs를 사용하여 다음과 같이 rm 명령을 작성할 수 있습니다.
$ find . … … | xargs rm
** 개행이나 공백으로도 실패합니다.
find
또는 더 나은 방법은 rm 명령을 요청하는 것입니다 .
$ find . … … -exec rm {} \;
그러나 가장 좋은 해결책은 find에서 직접 삭제 옵션을 사용하는 것입니다.
$ find . -iregex '.*.new.*' -regex '.*.pdf*' -delete