GNU/Linux >> Tutoriels Linux >  >> Linux

Comment limiter la profondeur de la liste de fichiers récursifs ?

Commander le -maxdepth drapeau de find

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

Ici, j'ai utilisé 1 comme profondeur de niveau maximale, -type d signifie trouver uniquement les répertoires, qui alors ls -ld répertorie le contenu de, au format long.


Utilisez find les options de

Il n'y a actuellement aucun exec de /bin/ls nécessaire ;

Find a une option qui fait exactement cela :

find . -maxdepth 2 -type d -ls

Pour voir uniquement le niveau de sous-répertoires qui vous intéresse, ajoutez -mindepth au même niveau que -maxdepth :

find . -mindepth 2 -maxdepth 2 -type d -ls

Utiliser le formatage de sortie

Lorsque les détails affichés doivent être différents, -printf peut afficher n'importe quel détail sur un fichier dans un format personnalisé ; pour afficher les autorisations symboliques et le nom du propriétaire du fichier, utilisez -printf avec %M et %u dans le format .

J'ai remarqué plus tard que vous vouliez les informations complètes sur la propriété, qui incluent le groupe. Utilisez %g au format du nom symbolique, soit %G pour l'identifiant du groupe (comme aussi %U pour l'ID utilisateur numérique)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

Cela devrait vous donner uniquement les détails dont vous avez besoin, pour les bons fichiers.

Je vais donner un exemple qui montre des valeurs réellement différentes pour l'utilisateur et le groupe :

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(Modifié pour plus de lisibilité :indenté, dernière ligne raccourcie)


Remarques sur les performances

Bien que le temps d'exécution soit la plupart du temps sans importance pour ce type de commande, l'augmentation des performances est ici suffisamment importante pour mériter d'être signalée :

Non seulement nous épargnons la création d'un nouveau processus pour chaque nom - un énorme tâche -l'information n'a même pas besoin d'être lue, comme find le sait déjà.


tree -L 2 -u -g -p -d

Imprime l'arborescence des répertoires dans un joli format jusqu'à la profondeur 2 (-L 2).Imprime l'utilisateur (-u) et le groupe (-g) et les autorisations (-p).Imprime uniquement les répertoires (-d).l'arbre a beaucoup de d'autres options utiles.


Linux
  1. Comment trouver des parenthèses sans correspondance dans un fichier texte ?

  2. Comment répertorier les tailles de fichiers récursifs des fichiers et des répertoires dans un répertoire ?

  3. Comment trouver le gestionnaire de fichiers par défaut ?

  4. Comment créez-vous une liste/fichier à partir duquel pacman peut être installé ?

  5. Comment trouver un fichier dans FreeBSD

Autorisations Linux - Comment trouver les autorisations d'un fichier

Comment limiter la profondeur de la liste récursive des fichiers sous Linux

Comment changer la limite de fichiers ouverts sous Linux

Comment trouver des fichiers basés sur l'horodatage sous Linux

Comment limiter la profondeur de «l'arborescence» pour la liste de fichiers récursifs

Comment trouver la ou les lignes les plus longues dans un fichier sous Linux