2016-05-12 7 views
-1

Ich habe ein paar Dateien, die mit einem Linux-Shell-Skript umbenannt werden müssen. Ich brauche den Text „ID“ neben dem zweiten Zeichen der Dateinamen einfügen:Einfügen von Text in Dateiname mit Linux Shell-Skript

HP0001.txt 
    HP0002.txt 
    HP0003.txt 

das Skript sollte es umbenennen Lage sein

HPID0001.txt 
    HPID0002.txt 
    HPID0003.txt 
+1

Wenn es nur „ein paar Dateien“ ... es ist wahrscheinlich am einfachsten, sie manuell umbenennen. – paulsm4

+1

Was hast du probiert? Welche Shell verwendest du? Wie viele verschiedene Möglichkeiten kannst du dir vorstellen? Sind die vorhandenen Buchstaben immer 'HP'? Sind die zusätzlichen Buchstaben immer "ID"? Gibt es immer 4 Ziffern? Ist die Erweiterung immer '.txt'? Wie planen Sie, das Skript aufzurufen - werden die Dateinamen Argumente für das Skript sein, oder geben Sie einen Verzeichnisnamen als Argument an? (Im Zweifelsfall ist der Dateiname die bessere Wahl.) Verfügen Sie über einen verwendbaren Befehl 'rename' oder' vorname' auf Ihrem Rechner? –

+0

Dies ist verdächtig ähnlich http://stackoverflow.com/questions/37176199/insert-text-into-a-filename-in-unix ... Sind Sie Jungs auf dem gleichen Kurs? Entspricht Ihr Professor der Hilfe von außen? – tripleee

Antwort

1

Wenn es nur ein „paar Dateien“ Es ist wahrscheinlich am einfachsten, sie einfach manuell umzubenennen.

Ansonsten ist hier eine triviale Skript anpassen können:

for f in HP*.txt; do 
    f2=`echo $f|sed -e 's/HP/HPID/'` 
    echo mv $f $f2 
done 

SAMPLE OUTPUT:

ls HP* 
HP001.txt HP002.txt HP003.txt 

bash ./tmp.sh 
mv HP001.txt HPID001.txt 
mv HP002.txt HPID002.txt 
mv HP003.txt HPID003.txt 
0

Dateien im Verzeichnis vor Skriptausführung:

HP0001.txt 
HP0002.txt 
HP0003.txt 
main 

Hauptskript Inhalt

cat main.sh 

for file in * 
do 

    new_name=$(echo $file|sed 's/HP/&ID/') 

    mv $file $new_name 2>/dev/null 

done 

Verzeichnisinhalte nach Skriptausführung:

ls -1 
HPID0001.txt 
HPID0002.txt 
HPID0003.txt 
main 
Verwandte Themen