2017-12-29 10 views
2

Ich habe folgende Bilder.Mehrere Dateien umbenennen mit Linux-Shell-Skript

10.jpg 
11.jpg 
12.jpg 

Ich möchte obige Bilder entfernen. Ich habe folgende Shell-Skriptdatei verwendet.

for file in /home/scrapping/imgs/* 
do 
    COUNT=$(expr $COUNT + 1) 
    STRING="/home/scrapping/imgs/""Img_"$COUNT".jpg" 
    echo $STRING 
    mv "$file" "$STRING" 
done 

So ersetzt Dateinamen

Img_1.jpg 
Img_2.jpg 
Img_3.jpg 

Aber, ich mag die Dateinamen wie folgt ersetzen:

Img_10.jpg 
Img_11.jpg 
Img_12.jpg 

Also, wie COUNT Wert 10 setzen mein eigenes zu bekommen Ausgabe?

+0

10 vor der Zählung vorbelegen? –

+0

Initialisiere die Variable 'count' vor' for' –

+0

@ValdeirPsr Ich habe initialisiert aber funktioniert nicht. – Jayesh

Antwort

4

Die Syntax expr ist ziemlich veraltet, die POSIX-Shell ermöglicht die arithmetische Auswertung mit der Syntax $(()). Sie können

#!/usr/bin/env bash 

count=10 
for file in /home/scrapping/imgs/*; do 
    [ -f "$file" ] || continue 
    mv "$file" "/home/scrapping/imgs/Img_$((count++)).jpg" 
done 

auch aus den Fehlern in den Kommentaren berichtet nur tun, scheinen Sie es von der dash Shell ausgeführt werden. Es scheint nicht alle Funktionen zu haben, die der Standard-POSIX-Shell entsprechen. Führen Sie es mit der sh oder der bash Shell.

Und immer Kleinbuchstaben für benutzerdefinierte Variablen in Ihrem Shell-Skript verwenden. Großbuchstaben werden hauptsächlich für die Umgebungsvariablen verwendet, die von der Shell selbst verwaltet werden.

1

Mit Umbenennungs Befehl können Sie Ihre Dateien mit IMG_ Suffix:

rename 's/^/Img_/' * 

Die ^ Mittel, um den Start des Dateinamens mit IMG_, das heißt ersetzen: fügt ein Suffix.