Come ottenere l’elenco di tutti i proprietari di file in una directory Linux

Questo tutorial ha lo scopo di aiutarti a ottenere un elenco dei proprietari di tutti i file in una directory su Linux. I comandi qui presentati sono universali e dovrebbero funzionare su qualsiasi distribuzione Linux. My Lab è basato su Ubuntu 18.04, 16.04 e CentOS 7.
Lavorare con file, directory e autorizzazioni utente è un’attività quotidiana quando si amministrano sistemi Linux. Quasi tutto su Linux è un file ed è utile sapere come controllare e modificare la proprietà di un file/directory.
Elenca i proprietari dei file in una directory utilizzando il comando stat
Il stato è uno strumento a riga di comando utilizzato per visualizzare lo stato di file o file system su sistemi Linux/Unix. Su Ubuntu e su tutti i sistemi basati su Debian, il comando stat è fornito da coreutils lotto. Se per qualsiasi motivo questo pacchetto non è installato, puoi installarlo usando il comando:
$ sudo apt-get -y install coreutils
Su CentOS, il comando è fornito anche dal pacchetto coreutils che può essere installato usando yum se manca:
$ sudo yum -y install coreutils
Una volta confermato che il comando esiste, utilizzeremo le opzioni seguenti per ottenere i proprietari dei file in una directory:
– c : Per specificare il formato
%U : Formato per la stampa del nome utente del proprietario del file
Quindi la sintassi del comando è:
stat -c %U <file>
Per tutti i file utilizzare il carattere jolly *. Vedi gli esempi di seguito:
$ cd ~
$ stat -c %U *
jmutai
jmutai
jmutai
Il problema con questo output è che non esiste alcuna mappatura tra file e proprietario. Avremo bisogno di usare i concetti di bash per mappare il file e il proprietario. Quindi eseguiremo un comando come di seguito:
$ cd /dir
$ files=`ls`
$ for file in $files; do owner=`stat -c %C $file`; echo $file $owner; done
L’output di cui sopra sarà nel formato
Development jmutai
Documents root
ping_all.sh dan
examples.desktop benard
Per altre sequenze di formati di file validi, controlla la sua pagina man:
$ man stat
Elenca i proprietari dei file in una directory usando il comando find
Un cercatore è uno strumento da riga di comando di Linux spesso utilizzato per cercare file in una directory. Con alcuni comandi regex e print, puoi elencare i proprietari dei file in una directory
La sintassi esatta del comando da utilizzare è:
# find /dir -printf '%un'
Questo eseguirà una ricerca ricorsiva e un elenco predefinito. Puoi applicare filtri aggiuntivi, ad esempio stampare nomi utente univoci per evitare duplicati. Per fare ciò, invia il comando output a sort, with -u
opzione:
# find /dir -printf '%un' | sort -t: -u
Per includere la proprietà del filegroup, aggiungi a %g opzione nella funzione di stampa.
# find /dir -printf '%u:%gn' | sort -t: -u
L’esempio seguente stamperà tutti i nomi utente univoci che possiedono i file nel formato /cugino/ direttore

Vedere il seguente esempio per nomi utente e gruppi:

Usando il comando ls
Puoi anche usare il comando ls per controllare il proprietario di file e directory in Linux. L’unico problema è come gestire la proprietà ricorsiva.
# ls -lh /dir
# ls -lhR /dir
Conclusione
I tre comandi sopra dovrebbero aiutarti a identificare i proprietari di file e directory sulle tue macchine Linux. Se hai altri comandi/script che pensi di poter aggiornare in questo elenco, non esitare a condividerli.