rm给出了没有这样的文件或目录'对于现有文件

时间:2017-06-16 04:14:18

标签: shell

我的命令:

find . -name "myfile.h" | sed 's/.*/\"&\"/' | awk '{print $1}' |  while read filename; do
rm -r $filename
done

输出

rm: "./xxx/myfile.h": No such file or directory

但是,当我跑了" rm ./xxx/myfile.h"时,它成功了!

2 个答案:

答案 0 :(得分:1)

为什么要在文件名中添加双引号?这就是你得到错误的原因。此外,最好在此上下文中调用不带-r选项的rm。试试这个:

find . -name "myfile.h" | while read filename; do
  rm -- "$filename"
done

更简单地说,您可以使用-delete的{​​{1}}选项:

find

答案 1 :(得分:0)

如果您的文件树包含a/b/myfile.ha/c/myfile.h,则rm命令会在同一目录a/上执行两次

您可能希望将rm -r替换为rm -v -r以确认直觉。

您可以rm -r $filename替换rm -rf "$filename"以避免该消息(并移除您的sed ...)

通过rm调试find(1)替换echo rm。 阅读rm(1)