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