如何以递归方式删除名称以开头的所有目录,app-deployment-*
但具有名称的特定目录除外app-deployment-245a578
。IE 使用全局匹配删除所有目录,但不删除特定的已知命名目录。
rm -rf app-deployment-* # except app-deployment-245a578
如何以递归方式删除名称以开头的所有目录,app-deployment-*
但具有名称的特定目录除外app-deployment-245a578
。IE 使用全局匹配删除所有目录,但不删除特定的已知命名目录。
rm -rf app-deployment-* # except app-deployment-245a578
说明:
-maxdepth 1
没有递归的意思;-type d
意味着只搜索目录;-name 'app-deployment-*'
是您正在搜索的目录模式;! -name 'app-deployment-245a578'
是您从结果列表中排除的目录模式 如果要排除多个目录,请重复多次;
exec echo rm -rf
-- 执行命令echo rm -rf
;{} +
-- 将搜索结果作为参数添加到上面的命令中。目录名称将像这样添加:
echo rm -rf dir1 dir2 dir3
.关于最后一点。如果你想用每个参数分别调用命令(我的意思是
echo rm -rf dir1; echo rm -rf dir2;
),你应该写{} \;
(注意反斜杠)而不是{} +
.关于命令。我写
echo rm -rf
而不是因为使用任何类型的模式匹配rm -rf
的所有危险。在从命令中rm -rf
删除之前要小心并检查所有内容。echo
进一步阅读有关 rm + 模式的危险: rm的创造性使用
UPD:值得注意的是
{} +
应该在命令的末尾,即不能使用-exec rm {} + -rf