将定位结果导入 rm

将定位结果导入 rm

我尝试跑步

locate *.orig | xargs rm

但它说No such file or directory

我已经看到了这样做的方法,find但定位返回对象的完整路径,所以应该是可能的

答案1

如果文件名包含空格,则应使用

locate -0 $something | xargs -0 rm

locate手册页

-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查找文件并在尝试删除垃圾箱中的文件时出现错误。*.origrmNo 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 

相关内容