GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux Dateien in Großbuchstaben umbenennen

Der bash Shell hat eine Syntax zum Übersetzen eines Variablennamens in Großbuchstaben.

for file in * ; do      # or *.jpg, or x*.jpg, or whatever
    mv "$file" "${file^^}"
done

Diese Funktion wurde in Bash-Version 4.0 eingeführt, überprüfen Sie also zuerst, ob Ihre Version von bash setzt es um. Um Fehler zu vermeiden, versuchen Sie es einmal, indem Sie mv ersetzen von echo mv , nur um sicherzustellen, dass es das tut, was Sie wollen.

Die Dokumentation für diese Funktion finden Sie hier, oder geben Sie info bash ein und suchen Sie nach "upper".

Sie sollten wahrscheinlich entscheiden, was zu tun ist, wenn die Zieldatei bereits existiert (z. B. wenn sowohl x00000.jpg und X00000.JPG bereits vorhanden), es sei denn, Sie sind sich sicher, dass dies kein Problem ist. Um solche Namenskollisionen zu erkennen, können Sie Folgendes versuchen:

ls *.txt | tr '[a-z]' '[A-Z]' | sort | uniq -c | sort -n

und suchen Sie nach Zeilen, die nicht mit 1 beginnen .


rename

Der wahrscheinlich einfachste Weg, mehrere Dateien umzubenennen, ist die Verwendung von Perls rename . Um Kleinbuchstaben in Großbuchstaben zu übersetzen, würden Sie:

rename 'y/a-z/A-Z/' *

Wenn sich die Dateien auch in Unterverzeichnissen befinden, können Sie globstar oder find verwenden :

find . -maxdepth 1 -type f -iname "*.jpg" -execdir rename "y/a-z/A-Z/" {} +

Referenzen

  • Howto:Linux Mehrere Dateien an einer Shell-Eingabeaufforderung umbenennen – nixCraft
  • Weitere Informationen zu y/ , statt s übersetzen ersetzen.
  • DistroTube - Tools zum Umbenennen von Dateien unter Linux

for f in * ; do mv -- "$f" "$(tr [:lower:] [:upper:] <<< "$f")" ; done

Sie können Dateien nicht nur von Bash umbenennen, da Bash keinen eingebauten Befehl zum Umbenennen von Dateien hat. Dazu müssen Sie mindestens einen externen Befehl verwenden.

Wenn Perl erlaubt ist:

perl -e 'for(@ARGV){rename$_,uc}' *.jpg

Wenn Python erlaubt ist:

python -c 'import os, sys; [os.rename(a, a.upper()) for a in sys.argv[1:]]' *.jpg

Wenn Sie Tausende oder mehr Dateien haben, sind die obigen Lösungen schnell und die folgenden Lösungen deutlich langsamer.

Wenn AWK, ls und mv sind erlaubt:

# Insecure if the filenames contain an apostrophe or newline!
eval "$(ls -- *.jpg | awk '{print"mv -- \x27"$0"\x27 \x27"toupper($0)"\x27"}')"

Wenn Sie viele Dateien haben, funktionieren die obigen Lösungen nicht, weil *.jpg erweitert sich zu einer zu langen Argumentliste (Fehler:Argument list too long ).

Wenn tr und mv erlaubt sind, dann siehe die Antwort von damienfrancois.

Wenn mv ist erlaubt:

for file in *; do mv -- "$file" "${file^^}"; done

Bitte beachten Sie, dass diese .jpg umbenennen bis .JPG am Ende, aber Sie können sie ändern, um dies zu vermeiden.


Linux
  1. So benennen Sie Dateien unter Linux um

  2. So benennen Sie mehrere Dateien zusammen in Linux mit 3 Methoden um

  3. Entfernen eines Teils eines Dateinamens für mehrere Dateien unter Linux

  4. Finden Sie mehrere Dateien und benennen Sie sie in Linux um

  5. Dateien rekursiv umbenennen (Erweiterung ändern) in Linux

Rm-Befehl unter Linux

So benennen Sie Dateien über die Befehlszeile in Linux um

So benennen Sie eine Datei (en) in Linux um

8 Methoden zum gleichzeitigen Umbenennen mehrerer Dateien in Linux

Steganographie – Dateien in Bildern unter Linux verstecken

Linux-Erweiterung zum Umbenennen mehrerer Dateien