Gibt es eine Möglichkeit, alle Dateien in einem Verzeichnis in Kleinbuchstaben | Großbuchstaben umzubenennen ?
Ich suche einen Oneliner- Befehl.
Ich habe TotalCommander geliebt alt+f7
, jetzt brauche ich diese Funktionalität im Terminal
quelle
Gibt es eine Möglichkeit, alle Dateien in einem Verzeichnis in Kleinbuchstaben | Großbuchstaben umzubenennen ?
Ich suche einen Oneliner- Befehl.
Ich habe TotalCommander geliebt alt+f7
, jetzt brauche ich diese Funktionalität im Terminal
Benennen Sie jede Datei a_file
im aktuellen Verzeichnis a_file
in Kleinbuchstaben um.
for a_file in *;do mv -v "$a_file" `echo "$a_file" | tr [:upper:] [:lower:]` ;done;
Für Großbuchstaben kehren Sie die Argumente um zu [:lower:] [:upper:]
tr
Befehlsreferenz Link
Aktualisieren
Damit kann noch mehr Kontrolle *
durch ersetzt werden ls
.
Zum Beispiel kann in einem Verzeichnis mit 1.txt, 2.txt, 3.txt, 1.jpg, 2.jpg und 3.jpg Folgendes verwendet werden, um nur * .jpg-Dateien zu filtern ls
:
for a_file in $(ls *.jpg);do mv -v $a_file `echo $a_file | tr [:upper:] [:lower:]` ;done;
Der obige Code weist der a_file
Variablen alle Dateien mit der Erweiterung .jpg zu.
Aktualisieren Sie die hinzugefügte -v
Option für den mv
Befehl gemäß den empfohlenen Anweisungen .
mv
damit Sie sehen, was gerade getan wird. Sie möchten möglicherweise nicht "-f" übergeben, da dies möglicherweise vorhandene DateienEs gibt ein eleganteres und allgemeineres Dienstprogramm namens
prename
.Geschrieben von Larry Wall, kommt es mit
perl
so ist es sehr wahrscheinlich bereits auf Ihrem System als/usr/bin/prename
(wenn Sie Setup - Alternativen haben , ist ebenfalls verfügbar sein kann als/usr/bin/rename
symbolischer Link über / etc / Alternativenprename
)Mit diesem Befehl können Sie mehrere Dateien in einem Befehl umbenennen, indem Sie einen beliebigen Perl-Ausdruck bereitstellen (einschließlich, aber nicht beschränkt auf Substitution
s///
oder Char-Transliterationtr///
):Beispiele:
Und so weiter.
Ein weiterer Vorteil von prename ist, dass es Sie schützt, wenn Sie eine Datei in einen vorhandenen Dateinamen umbenennen.
man prename
für mehr Details.quelle
Verwenden
find
Zum
find
-name
Ihr Muster gelegt haben.-maxdepth 0
: Nur aktuelles Verzeichnis.Zum
rename
-n, -nono
: Keine Aktion: Namen der umzubenennenden Dateien drucken, aber nicht umbenennen.y/source/dest/
: Transkribieren Sie die Zeichen im Musterbereich, die in der Quelle erscheinen, in das entsprechende Zeichen in dest.quelle