1

Я использую поиск в скрипте Bash . Как я могу изменить этот код так, чтобы он включал определенный каталог в «bin», то есть «./bin/php/» (при этом игнорируя все другие подкаталоги «bin»)?

Текущий код:

find . -name '*.php' \
-and ! -path './bin/*' \

4 ответа4

2
find /bin /bin/php -maxdepth 1 -name "*.php"

Доказательство концепции

$ tree /bin
/bin
|-- ash
|-- dont_search
|   |-- hide_me.php
|   `-- hide_me.txt
|-- du
|-- file.php
|-- fmt
|-- php
|   |-- hide_me.txt
|   `-- show_me.php
`-- zsh

2 directories, 184 files

Результат

$ find /bin /bin/php -maxdepth 1 -name "*.php"
/bin/file.php
/bin/php/show_me.php

Обратите внимание, что /bin/dont_search/hide_me.php не совпадает

1

Это то, что вы имели ввиду?

find . \( \! -iregex ^./bin/.\* -o -iregex ^./include/something/.\* \) \
    -name \*.php
1

GNU найти

find . -name "*.txt" ! -iregex ".*/bin/.*"
1

Попробуй это:

find . ./bin/php -path ./bin -prune -o -print

Тем не менее, это будет игнорировать файлы, которые находятся в ./bin.

Кстати, это "найти", а не "найти Bash".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .