Ich habe viele Dateien in einem Ordner und möchte ihnen entweder ein Präfix oder ein Suffix (nicht beides ) hinzufügen . Ich habe hier nachgesehen und herausgefunden, dass ich es verwenden kann
for filename in *.jpg; do mv "$filename" "prefix_$filename"; done;
um allen Dateien, die auf enden, ein Präfix hinzuzufügen .jpg
(und wenn ich das entferne .jpg
, wird das Präfix allen Dateien im aktuellen Ordner hinzugefügt).
Ich würde es aber gerne können
- Ein Sufix hinzufügen (dh umbenennen
filename.ext
infilename.whatever.ext
), - Überprüfen Sie, ob das Präfix oder Suffix bereits vorhanden ist, und überspringen Sie dann
- Erstellen Sie einen Alias, der Argumente wie
addprefix whatever *.ext
oder akzeptiertaddsufix whatever *.*
shell
shell-script
rename
Dieser Brasilianer
quelle
quelle
if [ $f == $prefix* ]
und Sie können das Suffix eins mitif [ $f == *$suffix$([ ! -z $extension ] && echo -n '.')$extension ]
den paar mv-Befehlen in additivesuffix ändern. Für (2) sollte es bereits mit Dateien ohne Erweiterung funktionieren, es sei denn, ich bin ein schrecklicher Programmierer.Es gibt einen Perl-
rename
Befehl , der den Trick machen sollte. Beachten Sie jedoch: Es gibt verschiedene Befehle, die aufgerufenrename
werden. Stellen Sie also sicher, dass Sie das Perl-Skript haben, dasperlexpr
als Argument a erwartet . Dies ist derrename
Befehl, der vomperl
Paket für Debian und Derivate (Ubuntu, Mint,…) bereitgestellt wird , jedoch nicht für andere Distributionen, die möglicherweise ein anderes Hilfsprogramm habenrename
.Wie Sie sehen, ist es idempotent - es wird das Präfix nicht erneut hinzufügen, wenn Sie es mehrmals aufrufen.
Es funktioniert, indem entweder der (Null-) Anfang der Zeichenfolgen (
^
) oder der Anfang, gefolgt von einer optionalenprefix
Zeichenfolge, durch ersetzt wirdprefix
.Ich lasse dies entweder in einem Shell-Skript oder einer Shell-Funktion als Übung für Sie einkapseln :)
Postfix ist allerdings etwas schwieriger, da Sie herausfinden müssen, welcher Teil des Dateinamens die Erweiterung darstellt ...
quelle
rename
Element. Und ich weiß, dass Suffixe etwas schwieriger sind, es wurde in der verknüpften Frage nicht behandelt, und ich bin ein Anfänger in Linux, Bash, Shell-Skript, Perl und regulären Ausdrücken, also ist "etwas schwieriger" für mich ziemlich schwierig ! :)Mit
zsh
:~
ist der Globbing-Operator, der außer in bedeutetzsh
.quelle
Einfaches Beispiel, um das Präfix und die Erweiterung aller Bilder im aktuellen Ordner zu ändern.
Wenn Sie überprüfen möchten, wie sich dies auf Ihre Daten auswirken würde, bevor Sie sie ändern, ersetzen Sie das MV durch Echo
Die Ausgabe für IMG_7993.JPG ist EG_IMG_7993.jpg
quelle