2014-11-12 2 views
0

bash 명령을 사용하여 '* .tar.gz'확장명을 가진 모든 파일을 제거하려고합니다. 다음을 시도했지만 작동하지 않았습니다.bash를 사용하여 특정 확장명을 가진 모든 파일 제거

find . -iname '*.tar.gz' | rm 

이 경우 어떤 명령을 사용해야합니까? 또한 위의 명령이 작동하지 않는 이유를 말씀해 주시겠습니까?

답변

3

find 출력의 출력에 파이프 rm을하지 마십시오, 사용 xargs 또는 find -exec :

find . -iname '*.tar.gz' -exec rm {} + 

OR :

find . -iname '*.tar.gz' -print0 | xargs -0 -I {} rm {} 
+0

찾기 또한 '-delete' 플래그를 가지고 있습니다 :'find. -iname '* .tar.gz'-delete' – Jost

+1

@Jost'-delete'는 POSIX에 의해 지정되지 않습니다. –

+0

'-delete'는 POSIX에 정의되어 있지 않지만 BSD'find'가 지원합니다. – chepner

5

find 자체가 그래서 일부 버전에서 삭제할 수 있습니다

find . -iname '*.tar.gz' -delete 

이 스위치가 없으면 anubhava의 솔루션을 사용하십시오.

관련 문제