исключить каталоги с таким же окончанием имени - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь написать сценарий bash для выполнения одинаковых команд в каждой папке в каталоге. В командах я использую код python для создания новых папок с добавлением «_long» и «_wavs» к их именам для каждой папки.

И мне нужно запускать команды для всех папок, кроме вновь созданные папки с именами, заканчивающимися на «_long» и «_wavs».

Вот что я пробовал:

dirs=($(find /Volumes/exchange -type d))

for dir in "${dirs[@]}/!(`basename "$dir"`_long|`basename "$dir"`_wavs)/";
do
   *commands*
done

Ответы [ 2 ]

2 голосов
/ 17 февраля 2020

Когда вы не можете изменить ввод, как отличный ответ @nullPointer, вы можете проверить внутри l oop:

for dir in "${dirs[@]}"; do
   [[ $dir =~ _long$|_wavs$ ]] && continue;
   *commands*
done
2 голосов
/ 17 февраля 2020

Простой для l oop с find, исключая dirs с определенными именами:

for dir in $(find /Volumes/exchange -type d ! -name "*_wavs" ! -name "*_long") 
do  
    # commands on "$dir"  
done
...