Martin Schulze <joey@finlandia.infodrom.north.de> writes:
> Weerts, Christian wrote:
> > Hi,
> > ich habe hier mehrere Dateien und Verzeichnisse innerhalb eines
> > Hauptverzeichnisses deren Namen Leerzeichnen enthalten.
> > Da mir Leerzeichen nunmal ein grauss sind, möchte ich diese
> > gerne rekursiv durch Unterstriche ersetzen.
> > Hat jemand einen kleinen Einzeiler auf die schnelle zur Hand?
> find -type f |while read fname; do n=`echo "$fname"|tr ' ' _`; mv "$fname" "$n"; done
> find -type d |while read fname; do n=`echo "$fname"|tr ' ' _`; mv "$fname" "$n"; done
>
> Du bekommt eine Fehlermeldung fuer jede Datei/Verzeichnis, in der kein
> Leerzeichen enthalten ist, kannst Du aber ignorieren.
1. Du meinst find DIR ....
2. funkt nicht: "dir with space in name/file with space in name"
3. Ich brauche ein kleines Hilfsscript im PATH (z.B. /usr/local/bin/despace)
----------------- snip ---------------
#! /bin/sh
# despace - replace spaces in basename with underscores
set -e
nam=$(basename "$1")
dir=$(dirname "$1")
mv "$dir/$nam" "$dir/$(echo $nam | tr ' ' _)"
----------------- snip ---------------
dann:
$ install -d test/dir\ with\ space/sub\ dir
$ touch test/dir\ with\ space/sub\ dir/file\ with\ space
$ find test/dir\ with\ space/
test/dir with space/
test/dir with space/sub dir
test/dir with space/sub dir/file with space
$ find test -depth -name '* *' -exec despace {} \;
$ find test/dir_with_space/
test/dir_with_space/
test/dir_with_space/sub_dir
test/dir_with_space/sub_dir/file_with_space
$
Gruesse
Siggy
-- Siggy Brentrup - bsb@winnegan.de - http://www.winnegan.de/ ****** ceterum censeo javascriptum esse restrictam *******
This archive was generated by hypermail 2b30 : Mon Jul 16 2001 - 11:36:55 CEST