Erklärung der% Direktiven in find -printf

20
find /tmp -printf '%s %p\n' |sort -n -r | head

Dieser Befehl funktioniert einwandfrei, aber welche %s %pOptionen werden hier verwendet? Gibt es noch andere Optionen, die verwendet werden können?

Sand1512
quelle
4
Schauen Sie sich die Hilfeseite von find an.
Cyrus
mögliches Duplikat von Wo finde ich den PrintF-Formatierungsverweis?
Phuclv

Antworten:

25

Welche% s% p-Optionen werden hier verwendet?

Von der Manpage :

% s Dateigröße in Bytes.

% p Dateiname.

Scrollen Sie auf dieser Seite über alle regulären Buchstaben für printf hinaus und lesen Sie die Teile, denen ein% vorangestellt ist.

% n Anzahl der festen Links zur Datei.

% p Dateiname.

Der Name der % P- Datei mit dem Namen des Startpunkts, unter dem sie gefunden wurde, wurde entfernt.

% s Dateigröße in Bytes.

% t Letzte Änderungszeit der Datei in dem Format, das von der C `ctime'-Funktion zurückgegeben wird.

Gibt es noch andere Optionen, die verwendet werden können?

Es gibt. Siehe den Link zur Manpage.

Hennes
quelle
@don_crissti Ich werde nie verstehen, warum Leute zufällige Webdokumentation der Dokumentation vorziehen, die auf ihren Systemen installiert ist (was den zusätzlichen Vorteil hat, tatsächlich für ihr System relevant zu sein).
Kusalananda
1
@Kusalananda - Nun, ich kann mir ein Szenario vorstellen, in dem die Leute einen Link zu einer Webseite anstelle eines Zitats aus der auf ihrem System installierten Dokumentation einfügen: Sie befinden sich zum Zeitpunkt des Schreibens des Beitrags nicht auf einem Linux-Computer. Der Link sollte jedoch (imo) auf die offiziellen Dokumente verweisen (daher mein Kommentar oben, der aus unbekannten Gründen von den Mods gelöscht wurde ...). Abgesehen davon stimme ich Ihnen voll und ganz zu: Das OP sollte die auf seinem System installierte Handbuchseite zu Rate ziehen .
don_crissti
2
@don_crissti Oder sie befinden sich auf einem Server, auf dem keine Hilfeseiten installiert sind, was häufig vorkommt.
Runlevel0
Meine Manual-Seite ist jedoch in der Regel von FreeBSD. Es sei denn, ich habe zufällig eine Linux-VM in Reichweite. Und ich habe den Eindruck, dass die meisten Fragen auf GNU / Linux basieren.
Hennes
3
Ich sollte auch hinzufügen, dass ich als Programmierer / Power-User neben der überwältigenden und oft undurchschaubaren Ausgabe von Man-Pages für relativ unerfahrene Benutzer in der Regel nach neuartigen Lösungen suche, die auf Man-Pages nicht behandelt werden. Zum Beispiel (gerade) ein bestimmtes Datumsformat für die Ausgabe des Befehls 'find'. Die Manpage sagt dir nicht, dass du "% T" vor jede Variable stellen sollst - zumindest habe ich nicht festgestellt, dass ich genau danach gesucht habe. Sie könnten den ganzen Tag damit verbringen, es herauszufinden. (Oder geben Sie einfach.) Während eine Suche auf Stack Exchange diese Antwort im ersten Ergebnis klar erklärt.
Jim
0

Barrett 2012 sagt auf Seite 74:

-printfstring msgstr " gib die angegebene Zeichenkette aus, auf die Ersetzungen in der Art der C - Bibliotheksfunktion angewendet werden können printf()."

und empfiehlt natürlich die Manpage für die vollständige Liste der Optionen. Während Dinge wie find . -printf '%s %p\n'erklärt werden, tun andere nicht. @jimhat die Verwendung von %T. Ich persönlich benutze ein Skript mit einer Zeile ähnlich der, find . -printf '%T@ %p\n'ohne jemals verstehen zu können, was das %T@ist. Kann jemand auf eine erklärende Quelle für diese Optionen verweisen, die nicht in den Manpages zu finden ist?

Choklo
quelle
1
Wer ist dieser Barrett-Typ?
Kusalananda
@Kusalananda, Daniel J. Barrett, Autor von "Linux Pocket Guide", Seitenangabe bezieht sich auf die zweite Ausgabe. Seien Sie gewarnt, bevor Sie zur Bibliothek laufen, dass die Lösung für diese Frage dort nicht zu finden ist. Ansonsten eine sehr gute Anleitung.
Choklo