BASH attributi di file ginnastica: Come posso ottenere facilmente un file con percorsi completi e privilegi?

StackOverflow https://stackoverflow.com/questions/2254370

  •  20-09-2019
  •  | 
  •  

Domanda

Cari Maestri della linea di comando,

Ho un albero di directory per il quale voglio generare un file che contiene su due voci per riga: percorso completo per ogni file e le corrispondenti privilegi di detto file.

Per esempio, una riga potrebbe contenere:

/v1.6.0.24/lib/mylib.jar -r-xr-xr-x

Il modo migliore per generare la colonna a sinistra ci sembra essere find . Tuttavia, poiché ls non sembra avere una capacità a uno leggere un elenco di nomi di file o prendere stdin, sembra che devo ricorrere a uno script che fa questo per me. ... ingombrante.

ero sicuro che ho visto la gente in qualche modo arrivare a trovare per eseguire un comando su ogni file trovato, ma devo essere Daft questa mattina come io non riesco a capirlo!

Chiunque?

In termini di lettura, ha detto di file non potrebbe essere spazi nei nomi dei file, in modo da Di certo sarebbe bello se ci fosse un modo per ottenere alcuni degli strumenti da riga di comando esistenti per contare i campi da destra a sinistra. Ad esempio, abbiamo taglio . Tuttavia, taglio è a sinistra-prima e non avrà un numero negativo per indicare iniziare la numerazione sulla destra (come sembra la sintassi più ovvio per me). ... Senza dover scrivere un programma per farlo, ci sono modi semplici?

Grazie in anticipo, e grazie particolare per spiegare gli esempi si può fornire!

Grazie, RT

È stato utile?

Soluzione

GNU findutils 4.2.5 +:

find -printf "$PWD"'/%p %M\n'

Altri suggerimenti

stat -c %A file

stamperà i permessi dei file per file.

Qualcosa di simile:

find . -exec echo -ne '{}\t\t' ';' -exec stat -c %A {} ';'

Vi darà una versione mal formattata di ciò che il vostro dopo.

Si è reso molto più difficile, perché si vuole tutto allineato nelle tabelle. Si potrebbe voler esaminare il comando 'colonna'. TBH Vorrei solo rilassare i miei requisiti di uscita un po '. Uscita formattazione in SH è una spina nel fianco.

Si può fare anche con ls e awk:

ls -l -d $PWD/* | awk '{print $9 " " $1}' > my_files.txt

bash 4

shopt -s globstar
for file in /path/**
do
    stat -c "%n %A" "$file"
done
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top