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 ?