나는 달리기를 시도했다
locate *.orig | xargs rm
그러나 그것은 말했다 No such file or directory
나는 그것을하는 방법을 find
보았지만 찾기는 객체의 전체 경로를 반환하므로 가능해야합니다.
나는 달리기를 시도했다
locate *.orig | xargs rm
그러나 그것은 말했다 No such file or directory
나는 그것을하는 방법을 find
보았지만 찾기는 객체의 전체 경로를 반환하므로 가능해야합니다.
답변:
파일 이름에 공백이 있으면 사용해야합니다
locate -0 $something | xargs -0 rm
에서 locate
man 페이지 :
-0
,--null
각 항목을 별도의 줄에 쓰는 대신 ASCII NUL 문자를 사용하여 출력 항목을 구분하십시오. 이 옵션은 GNU xargs (1)의 --null 옵션과의 상호 운용성을 위해 설계되었습니다.
또는
locate $something | while read f; do rm "$f"; done
또한 *.orig
쉘 확장을 피하기 위해 따옴표로 보호 하고 그대로 두어야합니다.
| while read
홈 디렉토리에는 공백이있는 파일로 가득 차 있기 때문에 항상 사용 합니다.
*.orig
, 쉘은 말,에 패턴 확장됩니다 file1.orig file2.orig ...
, 그래서 locate
정확한 문자열을 볼 수 없습니다 *.orig
예상대로입니다.
tr '\n' '\0'
.
그건 xargs
하지xarg
이 명령 locate *.orig | xargs rm
은 실제로 작동하지만 휴지통에서 파일을 locate
찾고 있었으며 *.orig
휴지통 에서 파일을 삭제하려고 할 때 rm
오류가 발생했습니다 No such file or directory
.