dateien stapelweise umbenennen
dateien stapelweise umbenennen
kennt jemand ein tool mit dem ich dateien und ordner stapelweise nach bestimmten kriterien
umbenennen kann, also zum besispiel "ale grossbuchstaben in dateinamen in einem verzeichnis
in kleinbuchstabne verwandelm". oder ganz toll wäre:" alle leerzeichen in den dateinamen entfernen oder durch "-" ersetzen.
oder gibt es einen trick dies per script zu lösen?
startx.
umbenennen kann, also zum besispiel "ale grossbuchstaben in dateinamen in einem verzeichnis
in kleinbuchstabne verwandelm". oder ganz toll wäre:" alle leerzeichen in den dateinamen entfernen oder durch "-" ersetzen.
oder gibt es einen trick dies per script zu lösen?
startx.
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Das geht natürlich auch mit der Shell, aber ich denke krename (Achtung: KDE) ist da komfortabler...
http://www.krename.net/
Patrick
http://www.krename.net/
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
Re: dateien stapelweise umbenennen
Beispiel Großbuchstaben in Kleinbuchstaben:startx hat geschrieben:kennt jemand ein tool mit dem ich dateien und ordner stapelweise nach bestimmten kriterien
umbenennen kann, also zum besispiel "ale grossbuchstaben in dateinamen in einem verzeichnis
in kleinbuchstabne verwandelm". oder ganz toll wäre:" alle leerzeichen in den dateinamen entfernen oder durch "-" ersetzen.
oder gibt es einen trick dies per script zu lösen?
startx.
Code: Alles auswählen
for i in <deine_dateien>
do
mv $i `echo $i | tr 'A-Z' 'a-z'`
done
`find . -print` oder `ls irgendwas`
Der tr-Teil für Leerzeichen nach Underline: tr ' ' '_'
oder entfernen: tr -d ' '
Das ganze noch etwas hübscher machen (falls sich der Dateiname nicht ändert, würde mv im obigen Beispiel meckern) und feddich.
ACHTUNG: Erst testen! Schützt vor meinen Schreib- und deinen Lesefehlern.
Gruß
ernohl
ernohl
Und zum Schluß noch dieses nette rename-tool. Es nutzt die regex zum Umbenennen, quasi ein sed für's renaming.
http://developer.berlios.de/projects/rename/
by the way: ein .deb kann ich zur Not beisteuern.
http://developer.berlios.de/projects/rename/
by the way: ein .deb kann ich zur Not beisteuern.
Dafuer hab ich mir folgendes Perl-Skript gebastelt. Mir dem Parameter -R wird recursive alle Unterverzeichnisse umbenannt (Skript ev. oefter aufrufen, da noch nicht fertig). Das Skript laest sich sicher an deine Beduerfnisse anpassen.
Achtung ich bin ein ganz miesser Perl-Coder aber vielleicht hilfts trotzdem
Achtung ich bin ein ganz miesser Perl-Coder aber vielleicht hilfts trotzdem
Code: Alles auswählen
#!/usr/bin/perl -w
use File::Find;
use File::Copy;
use Cwd; # fuer die Funktion cwd (current working directory)
sub EinzelneDateiVerarbeiten {
#next if $file =~ /^\.\.?$/;
$DateinameAlt=$_;
$DateinameNeu='';
foreach $Zeichen (split // , $DateinameAlt){
# Deutsche Umlaute und Scharfes "ß"
if (ord($Zeichen) == 196){$DateinameNeu = $DateinameNeu . 'Ae';} # Ä hex = d4
elsif(ord($Zeichen) == 228){$DateinameNeu = $DateinameNeu . 'ae';} # ä hex = e4
elsif(ord($Zeichen) == 214){$DateinameNeu = $DateinameNeu . 'Oe';} # Ö hex = d6
elsif(ord($Zeichen) == 246){$DateinameNeu = $DateinameNeu . 'oe';} # ö hex = f6
elsif(ord($Zeichen) == 220){$DateinameNeu = $DateinameNeu . 'Ue';} # Ü hex = dc
elsif(ord($Zeichen) == 252){$DateinameNeu = $DateinameNeu . 'ue';} # ü hex = fc
elsif(ord($Zeichen) == 223){$DateinameNeu = $DateinameNeu . 'ss';} # ß hex = df
# Deutsche Umlaute und Scharfes "ß" anderer Zeichensatz
elsif(ord($Zeichen) == 142){$DateinameNeu = $DateinameNeu . 'Ae';} # Ä hex = 8e
elsif(ord($Zeichen) == 132){$DateinameNeu = $DateinameNeu . 'ae';} # ä hex = e4
elsif(ord($Zeichen) == 153){$DateinameNeu = $DateinameNeu . 'Oe';} # Ö hex = 99
elsif(ord($Zeichen) == 148){$DateinameNeu = $DateinameNeu . 'oe';} # ö hex = f6
elsif(ord($Zeichen) == 154){$DateinameNeu = $DateinameNeu . 'Ue';} # Ü hex = dc
elsif(ord($Zeichen) == 129){$DateinameNeu = $DateinameNeu . 'ue';} # ü hex = fc
# elsif(ord($Zeichen) == 223){$DateinameNeu = $DateinameNeu . 'ss';} # ß hex = df
elsif(ord($Zeichen) == 239){$DateinameNeu = $DateinameNeu . 'i' ;} # ï hex = ef
elsif(ord($Zeichen) == 237){$DateinameNeu = $DateinameNeu . 'i' ;} # í hex = ed
elsif(ord($Zeichen) == 225){$DateinameNeu = $DateinameNeu . 'a' ;} # á hex = e1
elsif(ord($Zeichen) == 233){$DateinameNeu = $DateinameNeu . 'e' ;} # é hex = e9
elsif(ord($Zeichen) == 34){$DateinameNeu = $DateinameNeu . '_' ;} # " hex =
elsif(ord($Zeichen) == 39){$DateinameNeu = $DateinameNeu . '_' ;} # ' hex =
elsif(ord($Zeichen) == 241){$DateinameNeu = $DateinameNeu . 'n' ;} # ñ hex =
elsif(ord($Zeichen) == 180){$DateinameNeu = $DateinameNeu . '_' ;} # ´ hex = b4
#Satzzeichen Entfernen
elsif($Zeichen =~ ',' ){}
elsif($Zeichen =~ ';' ){}
elsif($Zeichen =~ '\?'){}
elsif($Zeichen =~ '!' ){}
elsif($Zeichen =~ ':' ){}
elsif($Zeichen =~ '\`'){}
# Zeichen ersetzen
elsif($Zeichen =~ ' ' ){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '~' ){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '&' ){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '#' ){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\^'){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\@'){$DateinameNeu = $DateinameNeu . '_At_';}
# Klammern
elsif($Zeichen =~ '\('){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\)'){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\{'){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\}'){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\['){$DateinameNeu = $DateinameNeu . '_';}
elsif($Zeichen =~ '\]'){$DateinameNeu = $DateinameNeu . '_';}
# Alle anderen Zeichen unveraendert ausgeben
else {$DateinameNeu = $DateinameNeu . $Zeichen;}
}
# Ersetzen von Zeichenketten z.B. _-_ durch ein einfaches _
for($i=1;$i<=5;$i++){
$DateinameNeu =~ s/_-_/_/;
$DateinameNeu =~ s/-_-/_/;
$DateinameNeu =~ s/-_/_/;
$DateinameNeu =~ s/_-/_/;
$DateinameNeu =~ s/--/_/;
$DateinameNeu =~ s/---/_/;
$DateinameNeu =~ s/__/_/;
$DateinameNeu =~ s/___/_/;
$DateinameNeu =~ s/\.\./\./;
}
$DateinameNeu =~ s/PDF/pdf/;
$DateinameNeu =~ s/JPG/jpg/;
$DateinameNeu =~ s/MP3/mp3/;
$DateinameNeu =~ s/MPG/mpg/;
$DateinameNeu =~ s/GIF/gif/;
$DateinameNeu =~ s/HTM/htm/;
#$DateinameNeu =~ s/HTML/html/; # Achtung HTML Dateien mit kleiner Endung, LINKS!!!
# _ oder - am Anfang entfernen Tritt bei Dateien auf die Mit Klammern beginnen
$DateinameNeu =~ s/^-//;
$DateinameNeu =~ s/^_//;
# _ oder - am Ende entfernen
$DateinameNeu =~ s/-$//;
$DateinameNeu =~ s/_$//;
# _ oder - vor Endungen z.B. _.mpg -.mpg
$DateinameNeu =~ s/-\././;
$DateinameNeu =~ s/_\././;
# kommt z.B. bei "01. Lied" -> "01._Lied" vor
$DateinameNeu =~ s/\._/-/;
### Achtung alle Dateien kleichschreiben !!!
# $DateinameNeu="\L$DateinameNeu";
if($DateinameAlt ne $DateinameNeu){ #Falls der Dateiname geaendert werden soll
if( -e $DateinameNeu){ #Falls es den zukuenftigen Dateinamen schon giebt, Fehlermeldung und Logifle
print cwd() . "/$DateinameNeu gibt es schon, sie wird nicht umbenannt.\n\a";
$errorlog = $STARTDIR . "/error.log";
open(ERR,">> $errorlog"); # Logdatei in dem Verzeichnis oeffnen in dem das Skript aufgerufen wurde
print ERR cwd() . "/$DateinameNeu gibt es schon, sie wird nicht umbenannt.\n";
} else { # Datei verschieben
move($DateinameAlt,$DateinameNeu) or die "Datei verschieben Fehlgeschlagen: $!";
}
}
}
$STARTDIR = cwd(); # Verzeichnis in dem das Skript aufgerufen wurde
$ARGV[0] ||= ''; # Variable definieren falls kein Parameter uebergeben, damit "perl -w" keinen Fehler ausgibt
if($ARGV[0] =~ '-R'){ # Rekusrsive Verarbeitung
find(\&EinzelneDateiVerarbeiten, $STARTDIR); # Rekursive alle Dateien finden und der Funktion "EinzelneDateiVerarbeiten" uebergeben
} else { # Nur aktuelles Verzeichnis verarbeiten
opendir(DIR, $STARTDIR) or die "Konnte Verzeichnis $STARTDIR nicht oeffnen: $!";
while (defined($file=readdir(DIR))){
next if $file =~ /^\.\.?$/;
$_=$file;
EinzelneDateiVerarbeiten();
}
}
- blackm
- Moderator und Co-Admin
- Beiträge: 5921
- Registriert: 02.06.2002 15:03:17
- Lizenz eigener Beiträge: MIT Lizenz
Schöne Grüße
Martin
Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden
Martin
Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden
- blackm
- Moderator und Co-Admin
- Beiträge: 5921
- Registriert: 02.06.2002 15:03:17
- Lizenz eigener Beiträge: MIT Lizenz
Kannst ja hier einen Hinweis aus das Script posten, und das Script selbst im Wiki veröffentlichen.hupfdule hat geschrieben:Hab da mal ein python skript geschrieben. Werde das morgen mal posten.
by, Martin
Schöne Grüße
Martin
Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden
Martin
Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden