我在给定文件夹中有几个子目录,其中存在d2.sh~文件。我想通过以下shell脚本删除这个文件,而不是写在我在终端上写的.sh文件中的一行。为了清晰起见,[编辑已在此处正确格式化]
for i in `ls *`; do
if [ -d $i ]; then
cd $i
rm d2.sh~
cd ..
fi
done
这没有给我任何错误但是它无法从子目录中删除d2.sh~
。所以我想知道我上面犯了什么错误?
答案 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