我在给定文件夹中有几个子目录,其中存在d2.sh~文件.我想通过以下shell脚本删除这个文件,而不是写在我在终端上写的.sh文件中的一行.[ 编辑:为了清晰起见,此处已正确格式化]
for i in `ls *`; do
if [ -d $i ]; then
cd $i
rm d2.sh~
cd ..
fi
done
Run Code Online (Sandbox Code Playgroud)
这没有给我任何错误,但它无法d2.sh~从子目录中删除.所以我想知道我上面犯了什么错误?
find /some/path -type f -name "d2.sh~" -delete
Run Code Online (Sandbox Code Playgroud)
你的第一个错误是试图解析ls.请参阅此链接了解原因.
只是用for i in *; do ....
如果您需要递归,那么您需要查看find或者如果您有Bash 4.X,您可以这样做:
shopt -s globstar; for i in **/d2.sh~; do rm "$i"; done
Run Code Online (Sandbox Code Playgroud)