파일의 파일 이름 목록에서 명령을 실행하는 방법은 무엇입니까?


답변:


11

한 줄에 하나의 파일이있는 경우 한 가지 방법은 다음과 같습니다.

tr '\n' '\0' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --

파일 목록은 tr명령 에 대한 입력으로 제공되며 파일 구분 기호를 줄 바꿈에서 널 바이트로 변경하고 xargs명령은 입력시 널 바이트로 구분 된 파일을 읽고 인수로 추가 된 파일을 사용하여 rm 명령을 실행합니다.


1
또한 rm --just 대신에 사용 하는 것이 좋습니다 rm. 따라서 대시로 시작할 수있는 파일 이름은 rm매개 변수 로 취급되지 않습니다 .
artyom 2013

그것은 작동하지 않았다 친구 ........ tr : 추가 피연산자 monu.txt' Try tr --help '자세한 내용은. rm : 피연산자 누락 자세한 내용은`rm --help '를 시도하십시오. ........ 이것은 내가 볼 수있는 모든 와트입니다
monu

1
파일 이름 앞에 <가 빠졌습니까?
조나스 베를린

@artyom의 제안에 따라 xargs 명령도 약간 개선하고 제거 할 파일이 없으면 rm이 실행되지 않도록 -r을 추가했습니다.
조나스 베를린

5

위의 대답은 공백과 "이상한 카 랙터"가있는 파일 이름을 처리하기 위해 많은 시간이 걸리기 때문에 좋습니다. 그러나 파일 이름이 제정신이라면 가장 간단한 방법은 바로 (경고, bashism!)입니다.

rm $(< /the/file/with/names)

일반 쉘의 경우 :

rm `cat /the/file/with/names`
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.