Wieder mal Dateien umbenennen - Leerzeichen ersetzen

Datum: 2003-02-11
Quelle: suse-linux

Worum ging es?

Prinzipiell ähneln die folgenden Schnipsel mehr oder weniger den Lösungen in anderen Artikeln, die sich mit dem Umbenennen von Dateien befassen. Ich habe sie trotzdem aufgenommen, weil ein paar interessante Varianten existieren. Alle Versionen fangen den Fall ab, dass die Zieldatei bereits existieren könnte. Es geht also darum, Leerzeichen in Dateinamen zu ersetzen (hier durch den Unterstrich _).

Code
# im aktuellen Verzeichnis / in the current directory
ls | while read f; do
  test -f "$f" || continue
  n="`echo \"$f\" | sed 's/ /_/g'`"
  if test -e "$n"; then
    echo "Ziel \"$n\" existiert / destination \"$n\" exists" >&2
  else
    mv "$f" "$n"
  fi
done
# in einem anderen Verzeichnis / for another directory
ls "$dir" | while read f; do
  test -f "$dir/$f" || continue
  n="$dir/`echo \"$f" | sed 's/ /_/g'`"
  if test -e "$n"; then
    echo "Ziel \"$n\" existiert / destination \"$n\" exists" >&2
  else
    mv "$dir/$f" "$n"
  fi
done
# rekursiv / recursive
find "$dir" -type f -print | while read f; do
  n="`dirname \"$f\"`/`basename \"$f\" | sed 's/ /_/g'`"
  if test -e "$n"; then
    echo "Ziel \"$n\" existiert / destination \"$n\" exists" >&2
  else
    mv "$f" "$n"
  fi
done
Beschreibung

Der test am Schleifenanfang in den ersten beiden Varianten verwirft alle "Nicht-Dateien" (Verzeichnisse, Links, Devices, Named Pipes).