我尝试跑步
locate *.orig | xargs rm
但它说No such file or directory
我已经看到了这样做的方法,find
但定位返回对象的完整路径,所以应该是可能的
答案1
如果文件名包含空格,则应使用
locate -0 $something | xargs -0 rm
-0
,--null
使用 ASCII NUL 字符分隔输出中的条目,而不是将每个条目写在单独的行上。此选项旨在与 GNU xargs(1) 的 --null 选项进行互操作。
或者
locate $something | while read f; do rm "$f"; done
此外,您应该*.orig
用引号进行保护,以避免 shell 扩展,并将其传递给未受影响的位置。
答案2
它xargs
不是xarg
答案3
该命令locate *.orig | xargs rm
确实有效,但发生的情况是,它在垃圾箱中locate
查找文件并在尝试删除垃圾箱中的文件时出现错误。*.orig
rm
No such file or directory
答案4
一个技巧:将所有路径保存在 tmp 文件中。然后循环执行:
#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
pth=$line
rm "$pth"
done < /tmp/tmp.txt
rm -rf /tmp/tmp.txt