일반적으로 파일 이름에 공백이있는 파일을 제거하려면 다음을 실행해야합니다.
$ rm "file name"
그러나 여러 파일을 제거하려면 다음과 같이하십시오.
$ find . -name "*.txt" | xargs rm
공백이있는 파일은 삭제되지 않습니다.
답변
널 종결자를 사용 find
하고 말할 수 있습니다.xargs
find . -name "*.txt" -print0 | xargs -0 rm
또는 (더 간단하게) 내장 -delete
조치를 사용하십시오.find
find . -name "*.txt" -delete
또는 (감사합니다 @kos)
find . -name "*.txt" -exec rm {} +
둘 중 하나가 ARG_MAX
필요없이 시스템의 한계를 존중 해야합니다 xargs
.
답변
또한 find 이외의 것을 사용하면 tr을 사용하여 개행을 널 바이트로 바꿀 수 있습니다.
예 : 다음 하나의 라이너는 이름에 공백이 있어도 디렉토리에서 마지막으로 수정 된 10 개의 파일을 삭제합니다.
ls -tp | grep -v / | head -n 10 | tr "\n" "\0" | xargs -0 rm
답변
xargs 명령은 기본적으로 탭, 공백 및 줄 바꾸기를 구분 기호로 사용합니다. -d 옵션과 함께 개행 문자 ( ‘\ n’) 만 사용하도록 지정할 수 있습니다.
find . -name "*.txt" | xargs -d '\n' rm