Исключая массив / список каталогов в find - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь использовать массив из файла конфигурации, чтобы исключить список каталогов из find. Простой пример массива выглядит так:

excludedDirList2[0]='*.'
excludedDirList2[1]='node_modules'

Я возился с опциями -prune и ! -path, но я не могу найти способ динамически читать массив, генерировать find и заставить его действительно работать.

Пример команды, которая работает, но динамически не читает массив

find $dir -type f -name "hidden.txt" ! -path "${excludedDirList[1]}" ! -path "${excludedDirList[0]}"

1 Ответ

3 голосов
/ 19 июня 2019

Если это работает, просто добавьте ! и -path перед каждым элементом массива и передайте его find.

 excludedDirList2=('*.' 'node_modules')
 findargs=()
 for i in "${excludedDirList2[@]}"; do
       findargs+=('!' '-path' "$i")
 done
 find "$dir" -type f -name "hidden.txt" "${findargs[@]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...