Disons que j'ai un répertoire de haut niveau appelé /dir
et de nombreux sous-répertoires. Comment puis-je rechercher les sous-répertoires de /dir
Pour trouver celui appelé x/x/dir/x/x/x/target
?
Cette question est similaire à, mais pas exactement ce que je recherche: Trouvez la commande pour certains sous-répertoires .
Je ne cherche pas de fichiers, juste des annuaires avec un nom particulier.
Essayer find /dir -type d -name "your_dir_name"
.
Remplacer /dir
Avec votre nom de répertoire et remplacez "your_dir_name"
Avec le nom que vous recherchez.
-type d
racontera find
à rechercher des annuaires uniquement.
Pour une solution plus générale de trouver un ou plusieurs répertoires et la recherche de quelque chose comme la recherche d'anciennes adresses électroniques dans les référentiels GIT, regardez le modèle suivant:
find . -type d -name .git -print0|\
xargs -0r -I {} find {} -type f -print0 |\
xargs -0r grep -e '[email protected]'
echo **/target
ou pour obtenir un match par ligne:
printf %s\\n **/target
Cela fonctionne hors de la boîte dans ZSH. En Bash, vous devez d'abord exécuter shopt -s globstar
Premièrement, et attention à ce que cela traverse également des liens symboliques vers des répertoires. Dans ksh93, vous devez exécuter set -o globstar
Premièrement.
Si vous souhaitez faire correspondre uniquement des répertoires ou des liens symboliques vers des répertoires, ajoutez une trailing /
(C'est-à-dire **/target/
). Dans ZSH, pour correspondre uniquement aux annuaires, mais pas de liens symboliques vers des répertoires, faites cette **/target(/)
.
Dans n'importe quel shell, vous pouvez utiliser la commande find
:
find . -name target
Sur Linux et Cygwin, le .
Est facultatif. Si vous souhaitez correspondre uniquement aux répertoires, ajoutez -type d
.