2017-07-07 5 views
0

Ich habe Dateien mit mehreren Erweiterungen in einem Ordner wie .txt, .update, .text. Die Dateinamen sind wieBash-Skript, um mehrere Dateien gleichzeitig zu bearbeiten

out1.txt, out1.text, out1.update,

out2.txt, out2.text, out2.update

und so weiter ... .My Befehl sieht so aus:

./script.pl out1.txt out1.text out1.update 

Ich möchte diesen Befehl für jede Datei in die Schleife legen. Ich habe versucht, wie eine Schleife zu verwenden:

for i in *.{txt,text,update} 

Aber es nimmt den vollständigen Namen einschließlich der Erweiterung so dass ich konnte nicht herausfinden, wie die spezifischen Erweiterungsdateien in dem Befehl abzuleiten.

Danke!

+0

Mögliche Duplikate von [Dateinamen und Erweiterung in Bash extrahieren] (https://stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash) – Joe

+0

Ich habe es überprüft, aber es ist etwas anderes. – AsmaTahir

Antwort

0

können Sie:

+0

Es gibt einen Fehler, dass der Befehl "b" nicht gefunden wird. Ich habe durch mehrere Tests, aber es gibt einen Fehler. – AsmaTahir

+0

Es hat funktioniert. Ich hatte den Abstand zwischen der Variable "b" und dem Gleichheitszeichen "=". Ich entferne es und dann hat es perfekt funktioniert. Vielen Dank! – AsmaTahir

+0

@AsmaTahir, in der Tat ist Bash empfindlich für den Raum vor und nach "="; Ich habe meine Antwort korrigiert. – Setop

0
ext=$(awk -F\. '{ print "."$NF }' <<< $i) 
fil=$(basename -s $ext $i) 

Verwendung awk die Erweiterung zu extrahieren (begrenzt zweite Daten mit „“) Verwenden Basisnamen es mit der Erweiterung des den Dateinamen erhalten, ohne die Erweiterung

Verwandte Themen