BASH Dateiattribut Gymnastik: Wie kann ich einfach eine Datei mit vollständigen Pfaden und Privilegien erhalten?

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

  •  20-09-2019
  •  | 
  •  

Frage

Lieber Meister der Kommandozeile,

Ich habe einen Verzeichnisbaum, für die ich eine Datei erstellt werden soll, die auf zwei Einträge pro Zeile enthält: vollständigen Pfad für jede Datei und die entsprechenden Berechtigungen der Datei.

Zum Beispiel einer Zeile enthalten könnte:

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

Der beste Weg, um die linke Spalte dort zu erzeugen, erscheint zu finden sein . Da jedoch ls scheint nicht die Fähigkeit zu haben, entweder eine Liste von Dateinamen oder nehmen stdin zu lesen, es sieht aus wie ich zu einem Skript zurückgreifen, die das für mich tut. ... Cumbersome.

Ich war sicher, ich habe Leute gesehen, irgendwie fand einen Befehl für jede Datei ausführen lassen finden, aber ich muß heute Morgen sein bescheuert wie ich es nicht scheinen, um herauszufinden!

Wer?

In Bezug auf das Lesen der Datei könnte es Leerzeichen in Dateinamen, also Es wäre sicher schön, wenn es eine Möglichkeit gäbe, einige der bestehenden Befehlszeilen-Tools zu erhalten Felder zählen rechts nach links. Zum Beispiel haben wir cut . Allerdings Schnitt mit Links erste und wird nicht eine negative Zahl bedeutet, starten Sie die Nummerierung auf der rechten Seite nehmen (wie scheint die naheliegendste Syntax für mich). ... Ohne ein Programm zu schreiben, es zu tun, gibt es einfache Möglichkeiten?

Vielen Dank im Voraus, und besonderer Dank für alle Beispiele erläutern Sie zur Verfügung gestellten!

Danke, RT

War es hilfreich?

Lösung

GNU findutils 4.2.5 +:

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

Andere Tipps

stat -c %A file

Werden Dateiberechtigungen für Datei drucken.

So etwas wie:

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

geben Sie eine falsch formatierte Version von dem, was Ihr nach.

Es ist viel schwieriger gemacht, weil Sie alles, was in den Tabellen ausgerichtet werden sollen. Sie könnten in die ‚Spalte‘ Befehl suchen. TBH Ich möchte nur meine Ausgangs Anforderungen ein wenig entspannen. Formatierung der Ausgabe in SH ist ein Schmerz in den Arsch.

Es kann auch mit ls und awk erfolgen

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top