Linux Dateiendungen in Kleinbuchstaben

Gast #7171168
Lesenswert?

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
#7171201
Lesenswert?

(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.
Gast #7175628
Lesenswert?

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.
Gast #7175699
Lesenswert?

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:~$
Gast #7175904
Lesenswert?

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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren