我想从当前目录中以递归方式删除以.orig结尾的所有文件。
这会起作用吗?
ls -R | grep ".orig$" | rm
grep的结果是否作为rm的参数隐式传递到这里?
答案 0 :(得分:4)
如下:
find ./ -type f -name "*.orig" -exec rm "{}" \;
似乎对我有用,但最好先用echo
代替rm
对其进行测试;)
ls -R
不会有五个正确的格式输出直接传递给rm(通过grep),因为它为每个目录单独列出文件,如:
.:
local1.orig local
./dir:
nested1.orig nested2.orig
如果你想使用grep做类似的事情,你需要像这样使用xargs
:
grep ".orig$" | xargs rm
答案 1 :(得分:1)
不,他们不是。但这就是xargs
的目的:
ls -R | grep ".orig$" | xargs rm -i
会做你想要的。 -i
不是必需的,但在第一次运行时使用是个好主意。 (它会提示您删除文件。如果您确信答案始终为是,则在没有-i
的情况下中止并重新运行。)