Wie führe ich einen Befehl aus, bei dem eine Datei gefunden wird?
Angenommen, ich habe ein Verzeichnis mit dem Namen testdir:
$ ls -R testdir/
testdir/:
dir1 dir2 dir3 dir4 dir5
testdir/dir1:
doc1.pdf
testdir/dir2:
file1.txt
testdir/dir3:
doc2.pdf
testdir/dir4:
file2.txt
testdir/dir5:
doc5.pdf
Jetzt möchte ich eine Aktion ausführen (einen Befehl ausführen), bei der findeine bestimmte Datei / ein bestimmter Dateityp gefunden wird. Lassen Sie mich zum Beispiel finden *.pdf:
$ find . -name '*.pdf'
./testdir/dir3/doc2.pdf
./testdir/dir5/doc5.pdf
./testdir/dir1/doc1.pdf
Angenommen, ich möchte einen Befehl ausführen (z. B. touch file), in dem der obige Befehl Dateien findet. Mit anderen Worten, ich möchte eine Datei mit dem Namen filein jedem Verzeichnis erstellen, in dem mindestens eine .pdfgefunden wurde, damit ich Folgendes erhalte:
$ ls -R testdir/
testdir/:
dir1 dir2 dir3 dir4 dir5
testdir/dir1:
doc1.pdf file
testdir/dir2:
file1.txt
testdir/dir3:
doc2.pdf file
testdir/dir4:
file2.txt
testdir/dir5:
doc5.pdf file
Wie mache ich eine solche Arbeit?
Kann für jede gefundene Datei sein, cdwo Datei vorhanden ist und einen Befehl rekursiv ausführen.
Ich weiß, dass das findeine großartige Funktion hat: -execaber ich kann es nicht zum Laufen bringen.
Dies ist nur ein Beispiel, um eine Vorstellung davon zu bekommen, was ich tun möchte. Allgemein: Wie führe ich einen Befehl aus, bei dem Dateien findrekursiv gefunden werden?
-execdirdazu.