Angenommen, ich habe einen Ordner mit Dateien mit Namen wie
file1.txt
file2.txt
file2.txt
usw. Ich möchte für jeden einen Befehl ausführen, wie folgt:
mycommand file1.txt -o file1-processed.txt
mycommand file2.txt -o file2-processed.txt
mycommand file3.txt -o file3-processed.txt
usw.
Es gibt mehrere ähnliche Fragen auf dieser Site - der Unterschied besteht darin, dass ich den -processed
Test vor der Erweiterung in die Mitte des Dateinamens einfügen möchte .
Es scheint, find
sollte das Werkzeug für den Job sein. Ohne die -o
Flagge könnte ich das tun
find *.txt -exec mycommand "{}" ";"
Die {}
Syntax gibt jedoch den gesamten Dateinamen an, z file1.txt
. B. usw., sodass ich das " -processed
" nicht zwischen dem Dateinamen und seiner Erweiterung einfügen kann. Ein ähnliches Problem besteht bei der Verwendung einer einfachen Bash- for
Schleife.
Gibt es eine einfache Möglichkeit, diese Aufgabe mit find
oder auf andere Weise zu erfüllen ?
find *.txt
finden Sie alle Dateien und Verzeichnisse im aktuellen Verzeichnis, deren Namen mit enden.txt
, und dann alles unter diesen Verzeichnissen (falls vorhanden).