-
-
Der (interaktive) Befehl find wird dazu verwendet, um nach Dateien oder Verzeichnissen mit gewissen Merkmalen (Optionen vom Typ TEST) zu suchen. In Kombination mit Optionen vom Typ ACTION ermöglicht find dem Anwender, in einer Kommandozeile Zieldateien zu bearbeiten.
-
find --version
zeigt an, welche Version des Kommandos find vom System aufgerufen wird.
Screenshot: Anzeige der aufgerufenen Programmversion -
ALLGEMEINE SYNTAX
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
ERLÄUTERUNG DER EINZELNEN OPTIONEN
ARGUMENTE [-H] [-L] [-P]
bestimmt darüber, wie Links (anstatt echter Dateien oder Verzeichnisse) behandelt werden.
-
Argument -P bedeutet "folge niemals symbolische Links". Er ist Standard.
Link-Datei werden für sich betrachtet und behandelt. -
Argument -L bedeutet "folge immer symbolische Links".
Während der Suche betrachtet find nicht die Link-Datei selbst, sondern die Datei, auf die sie hinweist - außer find kann den Link nicht dereferenzieren (gebrochener Link, keine Zugriffsrechte, usw.). Insbesondere gelten folgende Umstände:- Falls der Link auf ein Verzeichnis hinweist, wird dieses Verzeichnis in die Suchmenge aufgenommen.
- Option -type bezieht sich nicht, auf die Link-Datei selbst, sondern auf das, worauf der Link hinweist.
-
Argument -H ist weitgehend äquivalent mit Option -P ("folge keine symbolische Links"). Eine Ausnahme gilt jedoch, wenn die Link-Datei im [starting-point] Bereich der Kommandozeile eingetragen wurde. Insbesondere sollte die Link-Datei in der Kommandozeile auf ein Verzeichnis referenzieren, wird das Verzeichnis durchsucht.
ARGUMENT -D
Falls find andere Ergebnisse liefert, als der User erwartet, kann er Debug-Optionen eingeben. Liste und Kurzerklärung dazu erhält er via -D help. Ich vermute, die Option wird in erster Linie von Entwicklern des Kommandos genutzt.
ARGUMENT -Olevel
Über verschiedene Grade der Optimierung (Werte 1 bis 3) kann der User möglicherweise auf die Dauer der Bearbeitung Einfluss nehmen. Bei gleichbleibenden Ergebnissen. Ich vermute, die Option wird in erster Linie von Entwicklern des Kommandos genutzt.
ARGUMENT [starting-point...]
Wurzelverzeichnis der untersuchten Baumstruktur.
Es können mehrere Verzeichnisse eingegeben werden, die nacheinander behandelt werden.
Wenn kein "starting-point" eingetragen wurde, startet find die Suche ab dem laufenden Verzeichnis, auch mit einem Punkt (.) bezeichnet.ARGUMENT [expression]
-
Durch Angabe von Merkmalen (z.B. Namensmuster,
Bedingungen in Bezug auf Daten der Aufstellung, Änderung, usw.) wird die Suche nach den richtigen Namen gesteuert (Filtereffekt).
-
Durch Angabe von Aktionen können
alle einzelnen Ergebnisse bearbeitet werden. Dies ist insbesondere der Fall, wenn find über das
Argument -exec mit weiteren Kommandos kombiniert wird.
Beispielsweise, wenn kombiniert mit dem Stream Editor
sed,
kann der User in einem Rutsch alle gefundenen Elemente ändern.
find erkennt den Anfang des Bereichs [expression] (bzw. das Ende des Bereiches [Starting-point]), wenn ein Argument beginnend mit ( - ), ( ( ) oder ( ! ) identifiziert wird. Wenn [expression] leer ist, übernimmt find standardmäßig -print.
Innerhalb des Bereiches [Expression] gibt es verschiedene Optionskategorien:
-
STELLUNGSABHÄNGIGE (POSITIONAL) OPTIONEN
Solche Optionen wirken nur für Tests, die nachstehend definiert werden. Erwähnenswert ist Option -daystart, die nachstehende Optionen -amin -atime -ctime -mmin -mtime steuert: Die Referenzzeit wird auf heute null Uhr gesetzt, anstatt 24 Stunden vorher. Beispiel:
-
find -ctime -2 -iname "*.txt" -printf "%CY-%Cm-%Cd %CH:%CM %f\n"
Die Erklärung: Finde Dateien, deren Name dem Muster "*.txt" (-iname "*.txt") entspricht und die innerhalb der letzten 2 Tage geändert wurden (-ctime -2). In dieser Zeitrechnung ist heute der Tag [0], Gestern der Tag [-1] und Vorgestern der Tag [-2].
Beispiel: find ohne Option -daystart -
find -daystart -ctime -2 -iname "*.txt" -printf "%CY-%Cm-%Cd %CH:%CM %f\n"
Die Erklärung ist dieselbe wie im vorherigem Beispiel.
Beispiel: find mit Option -daystart
-
-
GLOBAL WIRKENDE OPTIONEN
Solche Optionen wirken unabhängig von ihrer Position in [Expression]. Um die Lesbarkeit des Kommandos zu erhöhen, empfehlen die Entwickler solche Option immer an erster Stelle zu schreiben - ansonsten zeigt find eine Warnung an.
-
Optionen vom Typ TESTS
Optionen von diesen Typ stellen den eigentlichen Filter dar, anhand dessen nur die Namen (je nach dem Dateien oder Verzeichnisse) ausgesiebt werde, die von Interesse sind.
-
Optionen vom Typ ACTIONS
Optionen von diesem Typ ermöglichen eine Bearbeitung der Ausgabe. Dabei sind verschiedene Ebene denkbar.
BEISPIELE-
Standardmäßig - via ACTION -print - wird nur den Namen eines jeden Ergebnisses ausgegeben. Über Aktionen wie z.B. -printf kann der Umfang der ausgegebenen Daten erheblich erhöht werden z.B. Datum des letzten Änderung, File System Bezeichnung, Zugriffsrechte, Speicherplatz, usw.
-
Über Optionen wie -exec, -delete ist es dem User unmittelbar möglich, die gefundenen Elemente in einem Rutsch zu manipulieren. Dadurch wird dieses Kommando sehr mächtig und flexibel.
-
-
OPERATOREN
Logische Operatoren ermöglichen es, Optionen zu kombinieren, um komplexe Bedingungen zu formulieren.
-a
-andOperator UND
Alle mit dem Operator 'UND' verlinkten Bedingungen MÜSSEN GLEICHZEITIG gelten, damit die Suche als erfolgreich erachtet wird.Falls mehrere Bedingungen ohne Operatoren verknüpft werden, wird die UND-Verbindung standardmäßig angenommen.
-o
-orOperator ODER
Mindestens eine der verlinkten Bedingungen MUSS GELTEN, damit die Suche als erfolgreich erachtet wird .Die 'ODER'-Verknüpfung fordert eine Gruppierung der Bedingungen via Klammer \( und \)
! Operator NEGATION
Die mit dem Operator NEGATION versehene Bedingungen DARF NICHT gelten, damit die Suche als erfolgreich erachtet wird .-regex
-iregexErmöglicht die Zusammenstellung von Bedingungsmustern nach der sogenannten regex (regular expression) Syntax.
Option -iregex (im Gegensatz zu -regex) unterscheidet nicht zwischen dem Groß- und Klein- Buchstabieren.
Für weitere praktische Informationen zur Syntax siehe z.B. Baeldung: Tutorial: Using regular expression in command findBEISPIELE von find mit mehreren Bedingungen
-
BEISPIEL find -type f -iname "*.txt" -iname "*notizen*" -print
Suche im Arbeitsverzeichnis (working directory) - und in allen dazugehörigen Unterverzeichnissen - Dateien, deren Namen folgendem Muster genügen: Die Dateinamen haben die 'txt' Endung (Erweiterung) UND sie enthalten das Wort 'Notizen'
Es wird nicht zwischen Groß- und Klein-buchstaben unterschieden: Die Dateien mit den Namen 'notizen.txt', 'Notizen.TXT', 'Die_Notizen_2023.tXt' erfüllen die Bedingungen. Will man zwischen Groß- und Klein- Buchstaben unterscheiden, wird Option -name - anstatt -iname - herangezogen. -
BEISPIEL find -type f \( -iname "*.txt" -o iname "*.png" \) -print
Suche im Arbeitsverzeichnis (working directory) - und in allen dazugehörigen Unterverzeichnissen - Dateien, deren Namen folgendem Muster genügen: Die Dateinamen haben entweder die 'txt' Endung (Erweiterung) ODER die 'png' Endung.
Die Dateien mit den Namen 'meine_Notizen.txt', 'meine_Notizen.TXT', 'mein_Bild_1.png', 'mein_Bild_2.PNG' entsprechen dem Muster.Die ex-formatierten (escaped) Klammer \( und \) müssen jeweils mit Leerstellen vom Rest der Kommandokette getrennt werden, ansonsten werden sie nicht als solche erkannt werden.
-
BEISPIEL find -type f -iname "*.txt" ! \( -iname "*notizen*" \) -print
Suche im Arbeitsverzeichnis (working directory) - und in allen dazugehörigen Unterverzeichnissen - Dateien, deren Namen folgendem Muster genügen: Die Dateinamen haben die 'txt' Endung (Erweiterung), sie enthalten jedoch das Wort 'Notizen' NICHT.
-
-
-
-
BEISPIEL find /home/akh -maxdepth 2 -iname "*.txt" -type f -print
Listet alle TXT-Dateien im Home-Verzeichnis von User akh auf. Die Suchtiefe ist auf 2 Verzeichnisebenen begrenzt. Tiefer liegende Unterverzeichnisse werden ignoriert. Ist der aktuelle User akh, verkürzt sich die Syntax: find ~ -maxdepth 2 -iname "*.txt" -type f -print
Zu beachten ist, dass der Befehl ausführende User genügend Rechte hat. Ausserhalb des eigenen Home-Verzeichnisses muss in vielen Fällen der Befehl von einem User mit erweiterten Rechten aufgerufen werden - z.B. dem Root-User via sudo.
Screenshot: suche nach Dateien über Optionen: maxdepth, inameErläuterung der einzelnen Argumente:
/home/akh Wurzelverzeichnis der Suche (d.h. [starting point])
Standardmäßig durchsucht find alle Unterverzeichnisse innerhalb des eingegebenen VerzeichnissesManche Verzeichnisse könne verkürzt dargestellt werden:
- Das Wurzelverzeichnis des Systems (root directory) ist mit einem Bruchstrich (/) gekennzeichnet.
- Das laufende Verzeichnis (current oder working directory) ist mit einem Punkt (.) gekennzeichnet.
- Das Wurzelverzeichnis des Users (home directory) ist mit einem Tilde (~) gekennzeichnet.
-maxdepth 2 Die Option schränkt den Suchradius auf Unterverzeichnisse bis zum Niveau -2 ein.
-
-maxdepth 0
Es wird kein Verzeichnis unternommen. Die Option gilt nur für Testzwecke (Syntaxprüfung?). -
-maxdepth 1
Es werden keine Unterverzeichnisse untersucht, sondern nur Namen im eingegebenen Verzeichnis. -
-maxdepth 2
Die Suche gilt nur für das eingegebene Verzeichnis und seine Unterverzeichnisse. Alle tiefer gelegenen Verzeichnisse werden ignoriert.
Beachte: Die Option muss als erste Option eingegeben werden, ansonsten wird eine Warnung herausgegeben.
-type f f wie File. Nur Dateien werden betrachtet.
Umgekehrt sollten nur Verzeichnisse in Betracht gezogen werden, wird stattdessen -type d eingegeben.
-iname Bestimmt ein Muster, das auf die Namen der gesuchten Dateien zutrifft.
Im Gegensatz zu -name übersieht -iname den Unterschied zwischen Groß- und Klein- Buchstaben (was in meiner Praxis den wichtigeren Anwendungsfall darstellt).-print Jeder Name der Ergebnisliste wird vollständig angezeigt. Ein Name pro Zeile auf dem Standardausgabe.
Für Dateien, in deren Namen das Zeichen Newline vorkommt, ist diese Option ungeeignet - statt dessen sollte man -print0 nutzen (Anstatt das Zeichen Newline nach jedem Suchergebnis anzuhängen, verwendet find das Zeichen Null.)
-
BEISPIEL find -iname "*titi*" -type f -mtime -5 -print
Listet Dateien (keine Verzeichnisse) auf, die folgende Bedingungen erfüllen:
- Stillschweigend vorausgesetzt: Die Datei liegt im laufenden Verzeichnis oder in Unterverzeichnissen davon.
-
Option -iname "*titi*":
Der Name der Datei enthält die Zeichenkette titi, unabhängig von der Schriftart (font case). Das heißt, dass Z.B. die Dateien Der_titi_huk.txt, Nur_TiTi_alle.html, TITI.exe die Bedingung erfüllen. -
Option -mtime -5:
Die Datei wurde innerhalb der letzten 5 Tagen geändert.
Mehr Informationen zu den Optionen im nachstehenden Kapitel "Optionen vom Type Test"
-
BEISPIEL find -iname "*titi*" -type f -newermt "2022-06-01" -print
Listet Dateien (keine Verzeichnisse) auf, die folgende Bedingungen erfüllen:
- Die Datei liegt im laufenden Verzeichnis oder in Unterverzeichnissen davon.
-
Option -iname "*titi*":
Der Name der Datei enthält die Zeichenkette titi, unabhängig von der Schriftart (font case). -
Option -newermt "2022-06-01" :
Die Datei wurde zuletzt nach dem 01. Juni 2022 geändert.
Mehr Informationen zu den verwendeten Optionen im nachstehenden Kapitel "Optionen vom Type Test"
-
BEISPIEL find /home/akh -maxdepth 2 -iname "*.txt" -type f -print
-
-
-
TABELLE mit Beispielen
-mtime
-ctime
-atime
-mmin
-cmin
-aminOption -mtime steht für "last modified time" (Zeitpunkt der letzten Änderung).
BEISPIEL find / -mtime +50 -mtime -100 sucht im gesamten System Dateien, deren letzte Änderung zwischen 50 und 100 Tage zurückliegt.- Die Zahlen (50, 100) entsprechen einer Zeitspanne in Tagen.
-
Das + und das - Zeichen grenzen den Zeitraum relativ zum Zeitpunkt "jetzt" ab.
+ steht für "mehr als" und - steht für "weniger als" soundsoviel Tage
in der Vergangenheit.
Fraktionswerte sind zulässig.
BEISPIEL -mtime -0.5 sucht Namen, deren Änderung weniger als einen halben Tage bzw. 12 Stunden zurückliegt.
Ähnlich wie -mtime (m=modified), sind weitere Optionen verfügbar:
- -ctime (c=created, Zeitpunkt der Erzeugung)
- -atime (a=accessed, Zeitpunkt des letzten Zugriffs).
Ähnlich wie -mtime (time=Zeit in Tagen), ist Option -mmin (min=Zeit in Minuten) verfügbar - die ähnlich dekliniert wird: -cmin, -amin.
-newermt Option -newermt funktioniert ähnlich wie -mtime.
Anstatt die Zeit relativ zum jetzigen Zeitpunkt zu bestimmen, erwartet -newer(m)(t) ein absolutes Datum im amerikanischen Format ("JJ-MM-TT")
BEISPIEL find ~/Dokumente -type f -newermt "2022-06-17" [-print] listet alle Dateien im Unterverzeichnis /Dokumente des Home-Verzeichnisses, deren letzte Änderung (mt=modification time) nach dem 01. Juni 2022 (newer) statt fand.
Screenshot: find Dateien über Option newermt-maxdepth
-mindepthOption -maxdepth maxWert beschränkt die Suche innerhalb der Verzeichnisstruktur auf naheliegende Ebenen ab dem Startverzeichnis (=Ebene 1). Tiefer gelegene Unterverzeichnisse (ab Ebene maxWert+1) werden ignoriert.
Ähnlich funktioniert die Option -maxdepth minWert aber am umgekehrten Ende der Verzeichnisstruktur. Nur tief gelegene Unterebenen des Startverzeichnisses (ab Ebene minWert) werden in Betracht gezogen.
-perm
Option -perm filtert Elemente (Dateien, Verzeichnissen) mit bestimmten Zugriffsrechten (permissions) für die Kategorien owner, group und others - wie sie in der Unix-Welt vergeben werden. Die Option unterstützt unterschiedliche Schreibweisen, die in Kombination eine große Flexibilität der Formulierung ermöglicht.
-
Die zu prüfenden Zugriffsrechte können in Form einer dreistelligen Oktalzahl - eine Zahl für jede Kategorie user, group, others - oder in symbolischer Form (z.B 644 = u+rw, g+r, o+r, oder u+w, a=+r) beschrieben werden.
BEISPIELE mit Oktalzahlen
-
644:
user hat Schreib- [+2] und Lesezugriff [+4], group und others haben Lesezugriff [+4]
-
641:
user hat Schreib- [+2] und Lesezugriff [+4], group hat Lesezugriff [+4], others hat durchführen-Zugriff [+1]
BEISPIELE in symbolischer Form
-
u+w (user hat Schreibzugriff),
-
g+r (group hat Lesezugriff),
-
o+x (others hat durchführen-Zugriff).
In der symbolischen Schreibweise werden mehrere Bedingungen mit einem Komma (,) getrennt (bzw. verbunden).
-
644:
-
Vor den Bedingungen wird entweder nichts () oder ein Minus-Zeichen (-) oder ein Schrägstrich (/) gesetzt. Dies entscheidet darüber, wie die beschriebenen Rechte kombiniert werden.
BEISPIELE
-
find -type f -perm 664 -printf "%m %p \n"
Das Kommando zeigt Dateien im laufenden Verzeichnis mit folgenden Zugriffsrechte:- user und group haben Schreib- und Lese- Zugriff.
- others hat Lesezugriff. .
-
Andere zusätzliche Rechte dürfen für keine gewährleistet werden.
Hat z.B. others zusätzlich Schreibrechte, wird das Element aus der Lösungsmenge verworfen.
Die Option (ACTION) -printf "%m %p \n" dient der Protokollierung (Oktalwert der Zugriffsrechte, vollständiger Name der Datei).
-
find -type f -perm -664 -printf "%m %p \n"
Das Kommando zeigt Dateien im laufenden Verzeichnis mit folgenden Zugriffsrechte:- user und group haben Schreib- und Lese- Zugriff.
- others hat Lesezugriff.
-
Für alle Kategorien (user, group, others) müssen zumindest die beschrieben Zugriffsrechte
gelten, damit das Element zur Lösung gehört.
-
find -type f -perm /664 -printf "%m %p \n"
Das Kommando zeigt Dateien im laufenden Verzeichnis mit folgenden Zugriffsrechte:- user und group haben Schreib- und Lese- Zugriff.
- others hat Lesezugriff.
-
Wenn eine Bedingung für eine Kategorie (user, group, others) gilt,
gehört das Element zur Lösung.
⇒ In den meisten Fällen wird die Syntax mit dem Minus-Zeichen (-perm -664) geeignet sein.
Die Syntax mit dem Schrägstrich ist jedoch zu empfehlen, um Bedingungen zu negieren. Die nachfolgenden Kommandos tun alle das Gleiche.
-
find -type f ! -perm /111 -printf "%m %p \n"
find -type f \( ! -perm /111 \) -printf "%m %p \n"
find -type f ! -perm /a+x -printf "%m %p \n"
find -type f \( ! -perm /a+x \) -printf "%m %p \n"
Sie suchen Dateien für die, der durchführen-Zugriff (executable-bit) nirgends gesetzt ist.
BEACHTE:
Die Klammer () werden zur Begrenzung eines Ausdruckes verwendet. Der Schrägstrich davor vermeidet ein unwillkommenes Einmischen des Shell-Interpreters in die Kommandobearbeitung. -
-
WEITERE BEISPIELE zu Optionen vom Typ TEST
-
BEISPIEL find -type f -mtime 0
sucht alle Dateien im laufenden Verzeichnis (und Unterverzeichnissen), die innerhalb der letzten 24 Stunden modifiziert wurden.
-
BEISPIEL find -type f -mtime 0
-
TABELLE mit Beispielen
-
-
ACTION -exec
SYNTAX
find [Startverzeichnis...] {Argumente vom Typ TEST} -exec '{Zugriffsprogramm + Optionen}' {} \;
BESCHREIBUNG
Option -exec ermöglicht den Zugriff auf jedes einzelne Ergebnis während der Ausführung des Kommandos. {Zugriffsprogramm} ist ein beliebiges Programm. Jedes einzelne Element der Ergebnismenge von find wird via den Token {} dargestellt. Token \; schließt das Kommando. (Das Schließen des Kommandos ist unbedingt erforderlich.)
BEACHTE:
BEISPIELE
Die einfachen Anführungszeichen um die Klammer ('{}') und der Schrägstrich vor dem Semikolon \; sollen die bash-Shell daran hindern, die Ausdrücke im Vorfeld zu interpretieren.-
BEISPIEL find -type f -iname "*.txt" -exec grep -E -i -l 'Aktionärsnummer' {} \;
sucht alle TXT-Dateien (mit Erweiterung .txt, ohne auf Groß- oder Klein- Buchstaben zu achten) im laufenden Verzeichnis, in welchen die Zeichenkette Aktionärsnummer auftritt.Die Option -l der grep-Implementatierung auf meinem Kubuntu System bewirkt, dass nur der Dateiname ausgegeben wird, wenn es einen Treffer gibt. Standardmäßig werden alle zutreffenden Zeilen aus den untersuchten Dateien angezeigt, ohne jedoch die Dateien zu nennen.
-
BEISPIEL find -type f -iname "*.txt" -exec grep -E -i -c 'Aktionärsnummer' {} \; -print
führt die gleichen Operationen, wie im vorstehenden Beispiel: sucht nach einem bestimmten Muster in einer Menge von Dateien, die vom Befehl find definiert wurde.Der Output wird jedoch anders bestimmt: Option -c zeigt die Zahl des Auftretens vom gesuchten Muster. Option -print am Ende erzwingt die Ausgabe des Dateinamens. Damit wird für jede untersuchte Datei folgendes in der Reihenfolge gezeigt: -1- wie oft das gesuchte Muster auftritt -2- der Name der untersuchten Datei. Beachte, dass auch untersuchte Dateien ohne das gesuchte Muster (Zahl = 0) ausgegeben werden.
-
BEISPIEL find -type f -iname "*.html" -exec sed -i 's/toto/titi/gI' {} \;
sucht alle html-Dateien im laufenden Verzeichnis (und Unterverzeichnissen) und ggf. ersetzt in den gefundenen Dateien alle vorhandenen Zeichenketten toto mit der Zeichenkette titi.Das Kommando entspricht einer Verkettung von find mit sed. Die Verbindung erfolgt über den Token -exec. Er stellt sicher, dass jedes Ergebnis von find (d.h. jede gefundene Datei) via den "Platzhalter" {} als Eingabeparameter an das Programm sed weitergeleitet wird.
sed steht für stream editor.
Es ermöglicht eine Textdatei über Kommandozeile zu bearbeiten. Solche Bearbeitung wird über "Aktionen" gesteuert. Z.B. wird Aktion s/regexp/replacement/ dazu verwendet, um die Reguläre Expression regexp - wenn erkannt - mit replacement zu ersetzen.ANMERKUNGEN zu sed/substitute
- Die sed-Option -i bzw. --in-place bewirkt, dass der geänderte Text in die ursprüngliche Datei zurück geschrieben wird - anstatt in die Standard-Ausgabe weitergeleitet zu werden.
- Die Option g im Substitutionsausdruck (s//g) bewirkt, dass alle erkannten Strings in einer Zeile ersetzt werden (nicht nur der erste String).
- Die Option I im Substitutionsausdruck (s//I) bewirkt, dass das Muster unabhängig von der Schriftart, groß oder klein, (case insensitive) erkannt wird.
Siehe z.B. Ubuntu manpage: sed für mehr Informationen zur Syntax der Implementierung auf meinem Linux System.
-
BEISPIEL find -type f -iname "*.html" -exec rename -v 's/ /_/g' {} \;
sucht alle HTML-Dateien im laufenden Verzeichnis. Jedes Leer-Zeichen im Namen der gefundenen Dateien wird ggf. mit einem Unterstrich ersetzt.ANMERKUNGEN zu rename
- Das Kommando rename muss u.U. neu installiert werden (z.B. via sudo apt install rename). Möglicherweise gibt es mehrere unterschiedliche Implementierungen von rename in der Linux-Welt. Um Informationen zur installierten Version zu erhalten, rufe man die manpage auf (man rename): Auf meinem System ⇒ manpage rename.
- In der Implementierung auf meinem Linux System ist der Substitutionsausdruck s/ /_/g ein Perl-Ausdruck. Jeder Perl-Ausdruck ist zulässig.
- Die Option -v von Kommando rename steht für "verbose" (geschwätzig).
ALTERNATIVE zur Option -exec :
Anstatt der Option (ACTION) -exec bewirkt eine Kommandoverkettung von find mit xargs Ähnliches.
- BEISPIEL (a) läßt sich so umschreiben: find -iname "*.html" -type f -print | xargs sed -i 's/toto/titi/gI'
- BEISPIEL (b) läßt sich so umschreiben: find -iname "*.html" -type f -print | xargs rename -v 's/ /_/g'
-
-
SYNTAX
find [Startverzeichnis...] {Argumente vom Typ TEST} -deleteBESCHREIBUNG
Option -delete löscht jedes gefundene Element aus.BEISPIELE
-
(1) find -maxdepth 1 -iname "*.txt" -type f -delete
löscht alle TXT-Datei aus dem laufenden Verzeichnis. Die Unterverzeichnisse bleiben dagegen unberührt, weil nur Ebene 1 (-maxdepth 1) des Verzeichnisbaumes aktiv untersucht wird.Allerdings schweigt das Kommando (1) über das, was getan wurde. Wer eine Liste der gelöschten Dateien anzeigen lassen will, soll, statt der Option -delete, die äquivalente Option -exec rm -v (remove verbose) verwenden.
(2) find -maxdepth 1 -iname "*.txt" -type f -exec rm -v {} \;
Wer im Vorfeld wissen will, welche Dateien gelöscht würden, ohne das Löschen durchzuführen, - das sogenannte "dry-run" - , tippe Folgendes ein
(3) find -maxdepth 1 -iname "*.txt" -type f -exec echo 'rm -v' {} \;
-
(1) find -maxdepth 1 -iname "*.txt" -type f -delete
-
ACTION -printf
SYNTAX
find [Startverzeichnis...] {Argumente vom Typ TEST} -printf [Format-optionen...]BESCHREIBUNG
Die (standardmäßig gesetzte) Option -print zeigt den vollständigen Namen jeder gefundenen Elemente (Dateien, Verzeichnisse) an. Um zusätzliche (vom User bestimmte) Merkmale der gefundenen Elemente (Dateien, Verzeichnisse) zu zeigen, wird Option -printf [Formatoptionen...] verwendet.BEISPIELE
-
find -iname "*.html" -type f -printf "%TY-%Tm-%Td %TH:%TM %p \n"
sucht alle HTML-Dateien im laufenden Verzeichnis - und Unterverzeichnissen - und zeigt folgende ihrer Merkmale in derselben Reihenfolge:- Datum und Uhrzeit der letzten Änderung: Jahr(%TY)-Monat(%Tm)-Tag(%Td) Stunde(%TH):Minute(%TM)
- Vollständiger Name (%p)
Der Token %T bezieht sich auf die letzte Änderung des gefundenen Elementes.
Die Token %A und %C beziehen sich auf den letzten Zugriff. -
find -iname "*.html" -type f -printf "%s \t %p \n"
sucht alle HTML-Dateien im laufenden Verzeichnis - und Unterverzeichnissen - und zeigt folgende ihrer Merkmale in derselben Reihenfolge:- Speichergröße des Elements in bytes (%s)
- Vollständiger Name des Elementes (%p)
-
-
ACTION -exec
-
Englischsprachige Quellen