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 -processedTest vor der Erweiterung in die Mitte des Dateinamens einfügen möchte .
Es scheint, findsollte das Werkzeug für den Job sein. Ohne die -oFlagge 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- forSchleife.
Gibt es eine einfache Möglichkeit, diese Aufgabe mit findoder auf andere Weise zu erfüllen ?
find *.txtfinden Sie alle Dateien und Verzeichnisse im aktuellen Verzeichnis, deren Namen mit enden.txt, und dann alles unter diesen Verzeichnissen (falls vorhanden).