2011-09-07 18 views
13

C'è un modo per ottenere solo il proprietario e il gruppo del file, separati dallo spazio nella shell unix?Trova il proprietario di un file in unix

Sto provando a scrivere uno script per trovare il proprietario di tutti i file in una directory e stamparlo (in un formato specifico, non è possibile utilizzare ls -la).

risposta

18
ls -l | awk '{print $3, $4 }' 

Che farò

+0

Ciò che è '-tr' qui? – sanmai

+0

È possibile aggiungere | ordina | uniq se si desidera solo gli utenti/gruppi distinti anziché una lunga lista con duplicato – CPJ

+0

il tr era solo le mie dita che si contraggono per abitudine - ordina per tempo, invertito – CPJ

1
ls -l | cut -f3,4 -d" " | tail -n +2 
2

GNU find ha la possibilità -printf che farà questo per voi:

# if you want just the files in the directory, no recursion 
find "$dir" -maxdepth 1 -type f -printf "%u %g\n" 

# if you want all the files from here down 
find "$dir" -type f -printf "%u %g\n" 

# if you need the filename as well for disambiguation, stick a %f in there 
find "$dir" -maxdepth 1 -type f -printf "%u %g %f\n" 

Altri sistemi potrebbero avere questo come gfind.

10

utilizzare il comando stat, se disponibile sulla vostra versione di UNIX:

$ stat -c "%U %G" /etc/passwd 
    root root 

o, per fare questa operazione per tutti i file in una directory e stampare anche il nome di ciascun file:

$ stat -c "%n %U %G" * 
1

Prova anche il comando stat:

stat -c% U il file

Problemi correlati