【问题标题】:exclude directories with the same name ending排除具有相同名称结尾的目录
【发布时间】:2020-02-17 09:39:40
【问题描述】:
我正在尝试编写一个 shell 脚本,该脚本在所有文件夹上运行命令,但名称以“_long”和“_wavs”结尾的文件夹除外。
这是我尝试过的:
dirs=($(find /Volumes/exchange -type d))
for dir in "${dirs[@]}/!(`basename "$dir"`_long|`basename "$dir"`_wavs)/";
do
*commands*
done
【问题讨论】:
标签:
bash
shell
command-line
【解决方案1】:
带有find 的简单 for 循环不包括具有某些名称的目录:
for dir in $(find /Volumes/exchange -type d ! -name "*_wavs" ! -name "*_long")
do
# commands on "$dir"
done
【解决方案2】:
当你不能像@nullPointer 的优秀答案那样修改输入时,你可以检查循环内部:
for dir in "${dirs[@]}"; do
[[ $dir =~ _long$|_wavs$ ]] && continue;
*commands*
done