1 votes

Comment puis-je restreindre la recherche à des sous-répertoires spécifiques ?

J'utilise trouver dans un Bash script. Comment puis-je modifier ce code pour inclure un répertoire spécifique sous 'bin', c'est-à-dire './bin/php/' (tout en ignorant les autres sous-répertoires de 'bin') ?

Code actuel :

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

3voto

SiegeX Points 2199
find /bin /bin/php -maxdepth 1 -name "*.php"

Preuve de concept

$ 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

Résultat

$ find /bin /bin/php -maxdepth 1 -name "\*.php"
/bin/file.php
/bin/php/show\_me.php

Remarquez que /bin/dont_search/hide_me.php ne correspondait pas

1voto

sbeskur Points 1194

C'est ce que vous voulez dire ?

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

1voto

user31894 Points 2591

GNU find

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

1voto

Damian Powell Points 315

Essayez ça :

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

Cela ignorera les fichiers qui sont dans ./bin, aussi, cependant.

Au fait, c'est "trouver" plutôt que "Bash trouver".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X