Hi Ich suche nach einer einfachen Methode unter Linux die Endungen aller Dateien in einem Verzeichnis in kleinbuchstaben umzuwandelnund bei Überschneidungen soll am Dateinamen eine Nummer angehängt werden. Beispiel: peter.DOCX paul.pdf paul.PDF Resultat in etwa so: peter.docx paul.pdf paul_001.pdf
Hier bitte schön:
1 | for i in *; do j=${i,,}; mv -f $i $j; done |
Die Umbenennung bei mehrfachen Dateien und den Umgang mit Leerzeichen darfst du dir aber selber programmieren... Gruss, Udo
:
Bearbeitet durch User
(Ab bash 4.0 oder neuer):
1 | #!/bin/bash
|
2 | |
3 | for file in *.* |
4 | do
|
5 | name="${file%.*}" |
6 | ext="${file##*.}" |
7 | lower_ext="${ext,,}" |
8 | if [ "$ext" != "$lower_ext" ] && [ -f "$name.$ext" ] |
9 | then
|
10 | i=0 |
11 | suffix= |
12 | cmd= |
13 | while [ -f "$name.$ext" ] |
14 | do
|
15 | cmd="mv --no-clobber \"$name.$ext\" \"$name$suffix.$lower_ext\"" |
16 | mv --no-clobber "$name.$ext" "$name$suffix.$lower_ext" |
17 | i=$((i + 1)) |
18 | suffix="$(printf "_%03d" "$i")" |
19 | done
|
20 | echo "$cmd" |
21 | fi
|
22 | done
|
Was noch zu beachten ist, bei paul_001.pdf paul_001.PDF macht das oben paul_001_001.PDF draus. Aber bei paul.pdf paul_001.pdf paul.PDF wird paul_002.pdf draus.
Zum Testen (nix wird umbenannt nur neuer Name angezeigt): rename -n 's/(^.*)(\..*$)/$1\L$2/' ./* Wenn man sicher ist dass das oben funktioniert ohne "-n" aufrufen.
Herbert B. schrieb: > Zum Testen (nix wird umbenannt nur neuer Name angezeigt): > rename -n 's/(^.*)(\..*$)/$1\L$2/' ./* Das tut bei mir gar nichts. Ich habe hier das util-linux rename installiert, und nicht das GNU rename...
Udo K. schrieb: > Herbert B. schrieb: >> Zum Testen (nix wird umbenannt nur neuer Name angezeigt): >> rename -n 's/(^.*)(\..*$)/$1\L$2/' ./* > > Das tut bei mir gar nichts. Ich habe hier das util-linux rename > installiert, und nicht das GNU rename... $ apt show rename Package: rename Version: 1.30-1 Priority: optional Section: universe/perl Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 55,3 kB Depends: perl:any Homepage: https://metacpan.org/release/File-Rename Download-Size: 20,2 kB APT-Manual-Installed: yes APT-Sources: http://de.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages Description: Perl-Erweiterung zum Umbenennen mehrerer Dateien Dieses Paket stellt eine Perl-Schnittstelle zum Umbenennen mehrerer Dateien (File::Rename) und das Befehlszeilenwerkzeug »rename« bereit. Letzteres soll die früher mit dem Paket perl verteilte Version ersetzen.
Schön, dann gibt es neben dem util-linux rename und den Gnu rename auch noch das Perl rename. Wer soll da noch den Durchblick haben?
Meine distro hat gar kein rename
1 | abre2@PSTNABRE2A:~$ apt-file search bin/rename |
2 | plasmidid: /usr/share/plasmidid/bin/rename_from_fasta.sh |
3 | rename-flac: /usr/bin/rename-flac |
4 | trace2dbest: /usr/bin/rename_file.pl |
5 | abre2@PSTNABRE2A:~$ |
DPA schrieb: > Meine distro hat gar kein rename Mal gut, dass Du die "distro" geheim hältst. So kann man wenigstens gar nichts mit Deinem Beitrag anfangen. ;-)
debian/devuan. Ich habe nochmal nachgesehen, ich habe diese doch in den util-linux und rename Paketen, ich habe sie nur nicht gesehen, weil ich nach einem Binary bin/rename gesucht habe, aber die Pakete nutzen das alternatives system, um einen Symlink zu setzen. Wobei, eigentlich macht es keinen sinn, dass rename.ui und file-rename/prename beide rename anbieten. Die Tools haben ja eine komplett andere Syntax, da hätte man das besser gelassen...
Renametools gibts so viele wie Atome im Universum. mmv ist auch nicht schlecht. Mit GUI gibts auch genügend.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.