J'essaie d'obtenir tous les fichiers par masque dans un répertoire sans rechercher de manière récursive dans les sous-répertoires. Il n'y a pas d'option -maxdepth 0
sous AIX pour ça.
J'ai entendu parler de -prune
, mais je ne comprends toujours pas comment cela fonctionne.
Je suppose que la commande devrait ressembler à quelque chose comme
find dir \( ! -name dir -prune -type f \) -a -name filemask
mais ça ne marche pas.
Pourriez-vous s'il vous plaît écrire une commande correcte pour moi et expliquer comment cela fonctionnera ?
UPD
Il semble commander
find dir ! -path dir -prune
imprime tous les fichiers et catalogues dans dir
, mais pas les fichiers et catalogues dans dir/*
, afin que je puisse l'utiliser pour mon cas.
Réponse acceptée :
Vous voudriez :
find dir/. ! -name . -prune -type f -name filemask
Ou :
find dir ! -path dir -prune -type f -name filemask
Pour trouver les fichiers normaux appelés filemask
dans dir
sans chercher dans les sous-répertoires de dir
.
Avec find dir ! -name dir -prune
, vous auriez des problèmes s'il y avait un dir/dir
répertoire.
Le dir/.
approche fonctionne autour de cela parce que find
ne rencontrera aucun autre fichier nommé .
que ce dir/.
fichier passé en argument.
Le -path
l'approche fonctionne autour d'elle en regardant le chemin d'accès aux fichiers (par opposition au seul nom), -path dir
correspondra à dir
, mais pas sur dir/dir
(donc dir
sera le seul répertoire qu'il ne supprimera pas). -path
peut ne pas être disponible dans les anciennes versions d'AIX.
Plus généralement, pour l'équivalent standard de -maxdepth n
de GNU , voir Limiter la recherche POSIX à une profondeur spécifique ?