删除给定子目录中的文件

时间:2012-01-14 05:47:46

标签: bash shell

我在给定文件夹中有几个子目录,其中存在d2.sh~文件。我想通过以下shell脚本删除这个文件,而不是写在我在终端上写的.sh文件中的一行。为了清晰起见,[编辑已在此处正确格式化]

for i in `ls *`; do
    if [ -d $i ]; then
        cd $i
        rm d2.sh~
        cd ..
    fi
done

这没有给我任何错误但是它无法从子目录中删除d2.sh~。所以我想知道我上面犯了什么错误?

1 个答案:

答案 0 :(得分:6)

find /some/path -type f -name "d2.sh~" -delete

您的第一个错误是尝试解析ls。有关原因,请参阅this link

只需使用for i in *; do ...即可。

如果您需要递归,那么您需要查看find或者如果您有Bash 4.X,您可以这样做:

shopt -s globstar; for i in **/d2.sh~; do rm "$i"; done