Existe-t-il un moyen de limiter la profondeur d'une liste de fichiers récursifs sous Linux?
La commande que j'utilise en ce moment est:
ls -laR > dirlist.txt
Mais j'ai environ 200 répertoires et chacun d'eux a 10 répertoires. Cela va donc prendre beaucoup trop de temps et monopoliser trop de ressources système.
Tout ce qui m'intéresse vraiment, c'est la propriété et les informations sur les autorisations pour les sous-répertoires de premier niveau:
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin
ÉDITER:
Choix final de la commande:
find -maxdepth 2 -type d -ls >dirlist
ls -la /var/www/vhosts/*
?Réponses:
Commander le
-maxdepth
drapeau defind
Ici, j'ai utilisé 1 comme profondeur de niveau maximale, c'est-à-
-type d
dire trouver uniquement les répertoires, quils -ld
répertorie ensuite le contenu de, au format long.la source
-d
option àls
.find
partie pour résoudre son problème principal. Quoi qu'il en soit, je l'ajoute.-print0
etxargs -0
beaucoup. Exemple:find . -maxdepth 1 -type d -print0 | xargs -0 ls -d
Profitez des
find
options deIl n'y a en fait aucun exécutable
/bin/ls
nécessaire;Find a une option qui fait exactement cela:
Pour voir uniquement le seul niveau de sous-répertoires qui vous intéresse, ajoutez-le
-mindepth
au même niveau que-maxdepth
:Utiliser le formatage de sortie
Lorsque les détails qui s'affichent doivent être différents,
-printf
peuvent afficher tous les détails d'un fichier au format personnalisé; Pour afficher les autorisations symboliques et le nom du propriétaire du fichier, utilisez-printf
avec%M
et%u
dans leformat
.J'ai remarqué plus tard que vous vouliez les informations complètes sur la propriété, ce qui inclut le groupe. À utiliser
%g
au format du nom symbolique ou%G
de l'ID de groupe (comme aussi%U
pour l'ID utilisateur numérique)Cela devrait vous donner juste 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:
(Modifié pour plus de lisibilité: indenté, dernière ligne raccourcie)
Notes sur les performances
Bien que le temps d'exécution ne soit généralement pas pertinent pour ce type de commande, l'augmentation des performances est suffisamment importante ici pour mériter d'être signalée:
Non seulement nous économisons la création d'un nouveau processus pour chaque nom - une tâche énorme - les informations n'ont même pas besoin d'être lues, comme nous le savons
find
déjà.la source
tree -L 2 -u -g -p -d
Imprime l'arborescence de répertoires dans un joli format jusqu'à la profondeur 2 (-L 2). Affiche l'utilisateur (-u) et le groupe (-g) et les autorisations (-p). Imprime uniquement les répertoires (-d). l'arbre a beaucoup d'autres options utiles.
la source
tree -L 2 xxx/
outree -L 2 -d xxx/
suffit dans certains cas.J'ai trouvé une solution facile tout en jouant mon poisson, qui correspond parfaitement à votre besoin.
ou
la source