删除给定子目录中的文件

Reg*_*ser 2 bash shell

我在给定文件夹中有几个子目录,其中存在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~从子目录中删除.所以我想知道我上面犯了什么错误?

Sie*_*geX 6

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)