나는 달리기를 시도했다
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
에서 locateman 페이지 :
-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.