在以下脚本中,如何排除循环中的目录?我想这样做是因为所有文件都是指向同一级别中存在的这个目录的符号链接,所以我不想添加它。
cd /var/www
for dir in */
do
base=$(basename "$dir")
tar -czfh "${base}.tar.gz" "$dir"
done
答案1
您可以添加continue
这样的语句:
cd /var/www
for dir in */
do
if [ "$dir" == "foo" ] ; then
continue;
fi
base=$(basename "$dir")
tar -czfh "${base}.tar.gz" "$dir"
done
或者你可以使用命令来完成find
:
find /var/www -maxdepth 1 -type d \( -name foo \) -prune -o -print -exec bash -c "tar -czfh \`basename {}\`.tar.gz {}" \;
答案2
extglob
如果尚未启用,则需要启用此功能 ( shopt -s extglob
):
for dir in !(dirname)/
...