Bobby Asked: 2010-10-23 11:24:54 +0800 CST2010-10-23 11:24:54 +0800 CST 2010-10-23 11:24:54 +0800 CST 定位到 rm 的管道结果 772 我试着跑步 locate *.orig | xargs rm 但它说No such file or directory 我已经看到了这样做的方法,find但是 locate 返回对象的完整路径,所以它应该是可能的 gnome-terminal bash rm 5 个回答 Voted Best Answer enzotib 2010-10-23T11:39:26+08:002010-10-23T11:39:26+08:00 如果文件名包含空格,您应该使用 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用引号保护,以避免外壳扩展,并将其传递给未触及的位置。 maco 2010-10-23T11:30:16+08:002010-10-23T11:30:16+08:00 这xargs不是xarg Bobby 2010-10-23T13:20:02+08:002010-10-23T13:20:02+08:00 该命令locate *.orig | xargs rm确实有效,但正在发生的事情是在垃圾桶locate中查找*.orig文件并在尝试删除垃圾桶中的文件时rm吐出错误。No such file or directory user unknown 2011-03-20T16:11:17+08:002011-03-20T16:11:17+08:00 locate 不做 globbing,但 shell 做。shell 将 *.orig 扩展为它在当前目录中找到的与 *.orig 匹配的内容。 只需使用 locate .orig 如果这能让你得到你所需要的 locate .orig | xargs rm 或者,正如 enzotib 提到的 locate -0 .orig | xargs -0 rm 如果文件名中有空格。 Abdennour TOUMI 2014-03-24T10:29:43+08:002014-03-24T10:29:43+08:00 技巧:将所有路径保存在 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
如果文件名包含空格,您应该使用
从
locate
手册页:或者
此外,您应该
*.orig
用引号保护,以避免外壳扩展,并将其传递给未触及的位置。这
xargs
不是xarg
该命令
locate *.orig | xargs rm
确实有效,但正在发生的事情是在垃圾桶locate
中查找*.orig
文件并在尝试删除垃圾桶中的文件时rm
吐出错误。No such file or directory
locate 不做 globbing,但 shell 做。shell 将 *.orig 扩展为它在当前目录中找到的与 *.orig 匹配的内容。
只需使用
如果这能让你得到你所需要的
或者,正如 enzotib 提到的
如果文件名中有空格。
技巧:将所有路径保存在 tmp 文件中。然后,循环它: