Ich habe einige Beispiele für den Befehl zum Umbenennen ausprobiert, aber ich kann die Syntax nicht herausfinden, um das zu tun, was ich will.
Ich habe eine Reihe von Dateien mit der Bezeichnung "So etwas"
File_Ex_1.jpg
File_Ex_2.jpg
File_Ex_3.jpg
File_Ex_4.jpg
...
File_Ex_10.jpg
File_Ex_11.jpg
etc.
Ich möchte nur einige davon ändern, indem ich ein 0
einfüge, damit die Dateinamen die gleiche Anzahl von Zeichen haben.
Also möchte File_Ex_1.jpg
ich zu File_Ex_01.jpg
, File_Ex_2.jpg
zu gehenFile_Ex_02.jpg
Wie machen Sie das mit dem Befehl umbenennen?
Dieser rename
Befehl wurde über Home-Brew auf einem Mac installiert . Ausgabe von rename -v
:
rename -v
Usage:
rename [switches|transforms] [files]
Switches:
-0/--null (when reading from STDIN)
-f/--force or -i/--interactive (proceed or prompt when overwriting)
Wide character in print at /System/Library/Perl/5.18/Pod/Text.pm line 286.
-g/--glob (expand "*" etc. in filenames, useful in Windows™ CMD.EXE)
-k/--backwards/--reverse-order
-l/--symlink or -L/--hardlink
-M/--use=*Module*
-n/--just-print/--dry-run
-N/--counter-format
-p/--mkpath/--make-dirs
--stdin/--no-stdin
-t/--sort-time
-T/--transcode=*encoding*
-v/--verbose
Transforms, applied sequentially:
-a/--append=*str*
-A/--prepend=*str*
-c/--lower-case
-C/--upper-case
-d/--delete=*str*
-D/--delete-all=*str*
-e/--expr=*code*
-P/--pipe=*cmd*
-s/--subst *from* *to*
-S/--subst-all *from* *to*
-x/--remove-extension
-X/--keep-extension
-z/--sanitize
--camelcase --urlesc --nows --rews --noctrl --nometa --trim (see manual)
rename
, also kein Util-Linux haben , als auch weil die Ausgabe vonrename -v
Perl explizit erwähnt.-e
funktioniert dieser Aufruf , obwohl er dem Hilfetext zu widersprechen scheint, der, wenn ich ihn richtig verstehe, vor dem Perl-Code erforderlich ist , tatsächlich mit dem Umbenennungsdienstprogramm, das mit macOS geliefert wird. Ich ziehe meinen ersten Kommentar zurück.Bei der Version der Umbenennung, die Sie anscheinend verwenden, sollte der folgende Ausdruck die von Ihnen angeforderte Transformation ausführen (z. B. ein Verzeichnis mit den genannten Dateien
File_Ex_{1..11}.jpg
):(Entfernen Sie das Flag
-n
, um die Umbenennung durchzuführen.)Das Argument für
-e
ist ein Perl-Ausdruck zum Suchen und Ersetzen. Wobei_(\d\.)
Übereinstimmungen ein Unterstrich sind, gefolgt von einer einzelnen Ziffer und einem Punkt, und der Unterstrich durch einen ersetzt wird_0
, wodurch eine führende Null eingefügt wird.$1
ist ein Rückverweis auf die Gruppe in Klammern, die Ziffer und den Punkt, und lässt sie im neuen Dateinamen unverändert.quelle
Obwohl dies mit einem
prename
Befehl möglich ist, möchte ich eine Python-Alternative dazu bereitstellen:Das
pad_zeros.py
Skript ist einfach:Es nimmt Argumente in der Befehlszeile auf, iteriert über sie und füllt Nullen mit dem
.zfill()
Befehl auf (in diesem speziellen Fall mit zwei Zeichen). Da wir alle Dateien im selben Ordner bearbeiten, kann glob-star verwendet werden.quelle
Anomalous backslash in string: '\g'. String constant might be missing an r prefix. (anomalous-backslash-in-string)
Fehlerchmod 755
. und jetzt eineimport-im6.q16: not authorized
Bootsladung Fehler: sys '@ error / konstituieren.c / WriteImage / 1037. import-im6.q16: nicht autorisiertos' @ error/constitute.c/WriteImage/1037. import-im6.q16: not authorized
re '@ error / konstituieren.c / WriteImage / 1037. ./renameLeadZero.py: Zeile 6: Syntaxfehler in der Nähe eines unerwarteten Tokens,if' ./renameLeadZero.py: line 6:
wenn Datei in Datei: Fortsetzenrepr()
umfile
inre.split()
Zeile oder Zeichenfolge Formatierung ( stackoverflow.com/q/18707338/3701431 ) , aber wir berücksichtigen müssen , ob sie die Python3 oder python2.7 wir auf das System haben - ihre Zeichenfolge Die Formatierung ist nur ein bisschen anders. Für den Fehler im dritten Kommentar kann ich weder bestätigen noch leugnen - habe nie mit Conda gearbeitet.