gpt4 book ai didi

bash - 递归删除服务器上 CVS 目录的脚本

转载 作者:行者123 更新时间:2023-11-29 08:45:52 24 4
gpt4 key购买 nike

到目前为止,我已经想到了这个:

find . -name 'CVS' -type d -exec rm -rf {} \;

到目前为止它在本地有效,任何人都可以看到任何潜在的问题吗?我希望这基本上递归地删除意外上传到服务器的“CVS”目录。

另外,我怎样才能使它成为一个脚本,我可以在其中指定要清理的目录?

最佳答案

嗯,明显的警告:它会删除名为 CVS 的目录,无论它们是否是 CVS 目录。

您可以很容易地将它变成一个脚本:

#!/bin/sh

if [ -z "$1" ]; then
echo "Usage: $0 path"
exit 1
fi

find "$1" -name 'CVS' -type d -print0 | xargs -0 rm -Rf
# or find … -exec like you have, if you can't use -print0/xargs -0
# print0/xargs will be slightly faster.
# or find … -exec rm -Rf '{}' + if you have reasonably modern find

编辑

如果你想让它更安全/更万无一失,你可以在第一个 if/fi block 之后做这样的事情(有几种写法):


case "$1" in
/srv/www* | /home)
true
;;
*)
echo "Sorry, can only clean from /srv/www and /home"
exit 1
;;
esac

您可以随心所欲地制作它(例如,它不会中止,而是会提示您是否真的打算这样做)。或者您可以让它解析相对路径,这样您就不必总是指定完整路径(但话又说回来,也许您希望这样做更安全)。

关于bash - 递归删除服务器上 CVS 目录的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1330136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com