[Resolved] Как исключить каталог из find. команда?

Вопрос:

Я пытаюсь запустить find для всех файлов JavaScript, но как мне исключить конкретный каталог?

Здесь find код, который мы используем.

for file in $(find . -name "*.js')
do 
  java -jar config/yuicompressor-2.4.2.jar --type js $file -o $file
done

Отвечать:

Использовать -prune выключатель. Например, если вы хотите исключить misc каталог просто добавьте -path ./misc -prune -o к вашей команде поиска:

find . -path ./misc -prune -false -o -name '*.txt'

Вот пример с несколькими каталогами:

find . -type d ( -path dir1 -o -path dir2 -o -path dir3 ) -prune -false -o -name '*.txt'

Здесь мы исключаем ./dir1, ./dir2 а также ./dir3 в текущем каталоге, так как в find выражения это действие, которое действует в соответствии с критериями -path dir1 -o -path dir2 -o -path dir3 (если dir1 или dir2 или dir3), И с type -d.

Чтобы исключить имя каталога на любом уровне, используйте -name:

find . -type d ( -name node_modules -o -name dir2 -o -path name ) -prune -false -o -name '*.json'

Если -prune не работает для вас, это будет:

find -name "*.js" -not -path "./directory/*"

Предостережение: требует обхода всех нежелательных каталогов.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.