Jetzt weiß ich, wie ich das Schlüsselwort „find | grep“ verwende, um die gewünschte Datei zu erhalten.
Aber woher soll ich danach die Größe und die Erstellungszeitinformationen für jede gefundene Datei wissen?
Beispielsweise erhielt ich nach dem find | grep-Tutorial Folgendes:
./lab/zengjuchen/tutorial
./lab/zengjuchen/tutorial/tutorial
Wie kann ich mir die Erstellungszeit und -größe anzeigen lassen?
Antwort1
Sie haben mit der gemeinsamen Verwendung von find
und einen Fehler gemacht . ist perfekt geeignet, um Dateien zu filtern. Sie brauchen es nicht – tatsächlich ist es nicht empfehlenswert, Dateinamen auf diese Weise umzuordnen.grep
find
grep
Gehen Sie stattdessen folgendermaßen vor:
find -name '*tutorial*' -exec <some-command> {} \;
Hier <some-command>
wird für jede gefundene Datei ausgeführt, deren Name ersetzt {}
. Um beispielsweise die Dateigröße zu ermitteln:
find -name '*tutorial*' -exec du {} \;
Die Verwendung \+
von anstelle von \;
führt find
den Befehl für alle Dateien gleichzeitig aus, wenn der angegebene Befehl die Übergabe von mehr als einem Dateiargument unterstützt. Dadurch wird der Vorgang beschleunigt.
Oder Sie können es einfach mit Bash machen:
shopt -s globstar
du **/*tutorial*
Dabei **
werden rekursiv alle Verzeichnisse durchlaufen.
Was die Erstellungszeit betrifft: Traditionell wird diese nicht gespeichert. Sie erhalten nur den Zeitpunkt des letzten Zugriffs, der Änderung und der Statusänderung. Weitere Informationen finden Sie unterstat
. Dateisysteme wie ext4
speichern die Erstellungszeit als „Geburtszeit“. stat -c %w
Würde also für diese funktionieren. Lesen Sie mehr zu diesem ProblemHier.