【发布时间】:2015-05-18 20:55:06
【问题描述】:
我有一个包含许多文件夹和子文件夹(封面艺术等)的音乐存档,因此我决定做一个简单的 bash 脚本,而不是手动删除数百个 Folder.jpg、Desktop.ini 和 Thumb.db 文件但事情变得非常混乱。
我通过创建这样的虚拟文件夹进行了一个简单的测试: /home/dummy/sub1 - 子1子1 子1子1子1 子1子1子2 子 2 - 子2子1 子2子2 sub2sub2sub1
并在这些文件夹中随机复制了一些 .jpg、.mp3、.ini 文件。我的 bash 脚本目前看起来像这样:
function delete_jpg_ini_db {
if [[ $f == *.jpg ]]; then
echo ".jpg file, removing $f"
gvfs-trash $f
elif [[ $f == *.ini ]]; then
echo ".ini file, removing $f"
gvfs-trash -f $f
elif [[ $f == *.db ]]; then
echo ".db file, removing $f"
gvfs-trash -f $f
else echo "not any .jpg, .ini or .db file, skipping $f"
fi
}
function iterate_dir {
for d in *; do
if [ -d $d ]; then
echo "entering sub-directory: $d" && cd $d
pwd
for f in *; do
if [ -f $f ]; then #check if .jpg, .ini or .db, if so delete
delete_jpg_ini_db
elif [ -d $f ]; then #enter sub-dir and iterate again
if [ "$(ls -A $f)" ]; then
iterate_dir
else
echo "sub-directory $f is empty!"
fi
fi
done
fi
done
}
pwd
iterate_dir
当我运行它时,它成功地遍历了 sub1、sub1sub1 和 sub1sub1sub1,但它停在那里而不是回到家并接下来搜索 sub2。
我是 Bash 脚本的新手,感谢所有帮助.. 谢谢。
【问题讨论】:
标签: bash