GNU/Linux >> Linux Esercitazione >  >> Linux

Come limitare la profondità per l'elenco di file ricorsivi?

Acquista lo -maxdepth flag di find

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

Qui ho usato 1 come profondità massima del livello, -type d significa trovare solo directory, che quindi ls -ld elenca i contenuti di, in formato lungo.


Utilizza find opzioni di

In realtà non esiste alcuna esecuzione 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

Utilizza la formattazione dell'output

Quando i dettagli visualizzati dovrebbero essere diversi, -printf può mostrare qualsiasi dettaglio su un file in formato personalizzato;Per mostrare i permessi simbolici e il nome del proprietario del file, usa -printf con %M e %u nel format .

Ho notato più tardi che vuoi le informazioni complete sulla proprietà, che includono il gruppo. Usa %g nel formato per il nome simbolico, o %G per l'id del gruppo (come anche %U per ID utente numerico)

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

Questo dovrebbe fornirti 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 leggibilità:rientro, ultima riga accorciata)


Note sulle prestazioni

Sebbene il tempo di esecuzione sia per lo più irrilevante per questo tipo di comando, l'aumento delle prestazioni è abbastanza grande qui da valere la pena segnalarlo:

Non solo risparmiamo creando un nuovo processo per ogni nome:un enorme task -le informazioni non hanno nemmeno bisogno di essere lette, come find lo sa 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 autorizzazioni (-p).Stampa solo directory (-d).tree ha molte altre opzioni utili.


Linux
  1. Limita Posix Trova a una profondità specifica?

  2. Come trovare parentesi non corrispondenti in un file di testo?

  3. Come elencare le dimensioni dei file ricorsivi di file e directory in una directory?

  4. Come limitare la dimensione del file al commit?

  5. Come trovare il file manager predefinito?

Autorizzazioni Linux:come trovare le autorizzazioni di un file

Come limitare la profondità dell'elenco di file ricorsivi in ​​Linux

Come modificare il limite di file aperti in Linux

Come trovare file basati su timestamp in Linux

Come limitare la profondità dell'"albero" per l'elenco di file ricorsivi

Come trovare le righe più lunghe in un file in Linux