Bash - 修复混乱的输出

Bash - 修复混乱的输出

我不确定这是怎么发生的/为什么发生的。基本上,我有一个命令,应该查找并清除桌面上包含特定模式的所有文件。我正在使用以下命令执行第一部分:

find . -iregex '.*._.*'

当我单独运行它时,输出是正常的,即它显示所有包含该模式的文件。例如:

./Graph/CMPT 215/makefiles/._makefile6
./Graph/CMPT 215/makefiles/._example3.cmds
./Graph/CMPT 215/makefiles/._makefile5
./Graph/CMPT 215/makefiles/._makefile1
./Graph/CMPT 215/makefiles/._makefile4
./Graph/CMPT 215/makefiles/._makefile2
./Graph/CMPT 215/makefiles/._makefile3
...

但是我想删除所有这些文件,所以经过一些谷歌搜索后,我想到了这个:

rm -rf $(find . -iregex '.*._.*')

但问题是,当我运行此命令时,我得到以下输出:

rm: cannot remove â?~215/makefiles/._makefile6â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._example3.cmdsâ?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile5â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile1â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile4â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile2â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile3â?T: No such file or directory
...

我在网上查了一下,有人建议通过输入 来重置终端reset,但这并没有解决问题。我该怎么做才能确保输出rm正确?

如果有帮助的话,我在 Windows 上使用 ssh 连接到运行 Linux Mageia 的远程计算机并删除计算机上的某些文件

答案1

这应该可行:find . -iregex '.*._.*' -exec rm {} \;

命令的结果将作为其参数find发送给命令,是该参数的占位符,是完成查找功能的标志。rm{}\;-exec

有关 find 命令的更多信息这里

答案2

我认为您应该使用 xargs 命令和 find 命令,如下所示:

find . -iregex '.*._.*' | xargs rm -rf

find将所有不需要的文件收集到一个字符串中,并xargs rm -rf从该字符串中删除所有文件路径。使用 xargs 和 find then-exec选项会更有效,因为它只会运行rm -rf-exec选项不同的文件。

相关内容