C'è un modo per limitare la profondità di un elenco di file ricorsivo in linux?
Il comando che sto usando al momento è:
ls -laR > dirlist.txt
Ma ho circa 200 directory e ognuna ha 10 directory. Quindi ci vorrà troppo tempo e troppe risorse di sistema.
Tutto quello che mi interessa davvero sono le informazioni su proprietà e permessi per le sottodirectory di primo livello:
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
MODIFICARE:
Scelta finale del comando:
find -maxdepth 2 -type d -ls >dirlist
Controlla il flag -maxdepth
di find
find . -maxdepth 1 -type d -exec ls -ld "{}" \;
Qui ho usato 1 come profondità massima del livello, -type d
significa trovare solo le directory, che quindi ls -ld
elenca i contenuti di, in formato lungo.
find
In realtà non esiste alcun exec di /bin/ls
necessario;
Trova ha un'opzione che fa proprio questo:
find . -maxdepth 2 -type d -ls
Per vedere solo il livello di sottodirectory che ti interessa, aggiungi -mindepth
allo stesso livello di -maxdepth
:
find . -mindepth 2 -maxdepth 2 -type d -ls
Quando i dettagli che vengono mostrati devono essere diversi, -printf
può mostrare qualsiasi dettaglio su un file in formato personalizzato; Per mostrare le autorizzazioni simboliche e il nome del proprietario del file, utilizzare -printf
con %M
e %u
nel format
.
Ho notato in seguito che desideri le informazioni complete sulla proprietà, che include il gruppo. Utilizza %g
nel formato per il nome simbolico o %G
per l'id del gruppo (come anche %U
per l'ID utente numerico)
find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
Questo dovrebbe darti solo i dettagli di cui hai bisogno, solo per i file giusti.
Darò un esempio che mostra valori effettivamente diversi per utente e gruppo:
$ 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
(Modificato per la leggibilità: rientrato, accorciato l'ultima riga)
Anche se il tempo di esecuzione è per lo più irrilevante per questo tipo di comando, l'aumento delle prestazioni è abbastanza grande qui per renderlo utile indicarlo:
Non solo salviamo la creazione di un nuovo processo per ogni nome - un enorme compito - l'informazione non ha nemmeno bisogno di essere letta, dato che find
lo conosce già .
tree -L 2 -u -g -p -d
Stampa l'albero delle directory in un bel formato fino alla profondità 2 (-L 2). Stampa utente (-u) e gruppo (-g) e permessi (-p). Stampa solo directory (-d). l'albero ha molte altre opzioni utili.