Hallo liebe Experten:
Ich arbeite mit Ubuntu 8.4.01
Gibt es eine Software mit der ich alle Großbuchstaben in Datei- und Verzeichnisnamen in kleine umwandeln kann, die vielleicht sogar die Umlaute ä ü ö in ae ue oe umwandelt?
Ich arbeite wahlweise mit dem Linux- PC bringe oder über andere PCs mit einer externen Festplatte. Mit welcher Software kann ich zwei Verzeichnisse sychronisieren, dass wechselweise jeweils die neuere Version einer Datei auf das andere Verzeichnis geschrieben wird?
Danke
Gruß Gerold
Hallo Gerold,
Ich arbeite mit Ubuntu 8.4.01
Ich arbeite wahlweise mit dem Linux- PC bringe oder über
andere PCs mit einer externen Festplatte. Mit welcher Software
kann ich zwei Verzeichnisse sychronisieren, dass wechselweise
jeweils die neuere Version einer Datei auf das andere
Verzeichnis geschrieben wird?
Dazu empfehle ich dir z.B. rsync
http://rsync.samba.org/
kannst Du auch mit graphischer Oberfläche haben, wenn es dir lieber ist, grsync:
http://www.opbyte.it/grsync/
Übrigens einen Tipp, wenn die Verbindung zu w-w-w mal zusammengebrochen ist (oder zu langsam
kannst Du auch im Paketmanager selbst suchen:
Anwendungen -> Hinzufügen/Entfernen -> bei „Suche“ was passendes eingeben, hier z.B. synchron (weil Du was synchronisieren willst) und schon zeigt er dir etliche Pakete an, neben dem schon erwähnten rsync, z.B. auch unison, und Du kannst gleich das passende installieren.
Viele Grüße
Marvin
ich hab dafür ein Script erstellt
Hi,
für genau solche Fälle habe ich schon vor Jahren ein Skript angefangen. Das kannst du gerne verwenden (GPL) und es ändern auch noch mehr Zeichen mit denen Windows nicht klar kommt mit denen es manchmal Ärger gibt. Leerzeichen, Klammern, @s, Ausrufezeichen. Das ganze definiert rekursiv, mit Überschreibschutz für schon vorhandene Dateinamen und Längenbegrenzung.
Das Teil habe ich schon lange in gebrauch; seit dem ich heute die Änderungen für dich eingepflegt habe kommt manchmal ein „mv: Aufruf von stat für „…“ nicht möglich: No such file or directory“. Keine Ahnung was das bedeutet (weiß das hier jemand?), sollte aber wohl trotzdem gehen.
HTH,
J~
j~@darkstar:~/.bin$ cat specialrename
#!/bin/bash
# specialrename aendert Zeichen in Dateinamen:
# specialrename change characters in filenames (option: recursive):
# (spaces) -\> \_
# ä -\> ae
# ö -\> oe
# ü -\> ue
# Ä -\> Ae
# Ö -\> Oe
# Ü -\> Ue
# @,(,),[,],{,} -\> -
# ! -\> \_
#
# Bei Angabe einer Verzeichnistiefe als Argument
# erfolgt die Umwandlung rekursiv.
#
# Ist der neue Dateiname schon vorhanden, wird ein Zufallswert ergaenzt.
# (Unsicherheit des Überschreibens ca. 1:10000 !)
# Weiterhin wird die Länge des Dateinamens auf 60 Zeichen begrenzt.
#
################################################################
# (C) J~, 04.Jun2005, 23.Sep2007, 27.Aug2008
# This program is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation;
# either version 3 of the License, or (at your option)
# any later version.
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
###############################################################
#
# Den InputFieldSeparator sichern
# Save the old InputFieldSeparator
ALT\_IFS=$IFS
# Zeilenumbruch in IFS schreiben
# Store newline to IFS
IFS='
'
# Dateien mit Leerzeichen im Namen finden und in die Schleife
# übergeben
# Find files with spaces in name and tranfer the list to loop
if test $\*; then
echo "Parameter angegeben: arbeite" $1 "Verzeichnisse tief"
TIEFE=$1
else
echo "Kein Parameter angegeben: arbeite nur im aktuellen Verzeichnis"
TIEFE=1
fi
for ALTERNAME in $(find -maxdepth $TIEFE -name "\*\ \*" && find -maxdepth $TIEFE -name "\*(\*" && find -maxdepth $TIEFE -name "\*)\*" && find -maxdepth $TIEFE -name "\*\[\*" && find -maxdepth $TIEFE -name "\*\]\*" && find -maxdepth $TIEFE -name "\*{\*" && find -maxdepth $TIEFE -name "\*}\*" && find -maxdepth $TIEFE -name "\*@\*" && find -maxdepth $TIEFE -name "\*ä\*" && find -maxdepth $TIEFE -name "\*ü\*" && find -maxdepth $TIEFE -name "\*ö\*" && find -maxdepth $TIEFE -name "\*Ä\*" && find -maxdepth $TIEFE -name "\*Ü\*" && find -maxdepth $TIEFE -name "\*Ö\*" && find -maxdepth $TIEFE -name "\*\!\*" ) ; do
# Leerzeichen, Klammern, @, Umlaute ersetzen
# Replace spaces etc
ZWISCHENNAME=$(echo $ALTERNAME | sed -e s/\ /\_/g | sed -e s/\\[/-/g | sed -e s/\\]/-/g | sed -e s/\(/-/g | sed -e s/\)/-/g | sed -e s/\\@/-/g | sed -e s/\{/-/g | sed -e s/\}/-/g | sed -e s/ä/\ae/g | sed -e s/ö/\oe/g | sed -e s/ü/\ue/g | sed -e s/Ä/\Ae/g | sed -e s/Ö/\Oe/g | sed -e s/Ü/\Ue/g | sed -e s/\\!/\_/g )
# Dateinamen auf 60 Stellen begrenzen
ZWISCHENNAMEEXT=${ZWISCHENNAME##\*.} # Erweiterung merken
NEUERNAME=${ZWISCHENNAME%.\*} # alles bis zum letzten Punkt
# (ausschliesslich)
NEUERNAME=${NEUERNAME:0:60} # ab Pos 0, 60 Zeichen Laenge
NEUERNAME="${NEUERNAME}.${ZWISCHENNAMEEXT}" # und wieder zusammenbauen...
# Kontrollausgabe
# output for control
echo $ALTERNAME" -\> "$NEUERNAME # gibt Dateinamen aus
# umbenennen
# rename files
if test -f $NEUERNAME; then
echo $NEUERNAME schon vorhanden. Durch Zufallswert ergaenzt.
mv "$ALTERNAME" "$NEUERNAME".$RANDOM
else
mv "$ALTERNAME" "$NEUERNAME"
fi
done
# alten IFS wieder herstellen
# replace old IFS
IFS=$ALT\_IFS