【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 2012-06-25
        • 2018-08-18
        • 2022-10-17
        • 1970-01-01
        • 2016-01-05
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        相关资源
        最近更新 更多