Am Sonntag, 4. März 2007 16:22 schrieb David Haller: Hallo David,
Am Son, 04 Mär 2007, Al Bogner schrieb:
Am Samstag, 3. März 2007 22:47 schrieb David Haller:
Nimm
find ... | while IFS= read -r FILE; do ... ; done
Vielen Dank, wieder einmal! Es gibt im Netz einiges zu Leerzeichen durch "_" rekursiv ersetzen. Ich bin mir aber unsicher, was da passt. Hast du eine Empfehlung dafür? Sehe ich es falsch, dass man da bei obigem Konstrukt nur mit sed die Leerzeichen ersetzen muss oder ist auch an andere Dinge zu denken?
Ja, was machst du mit den Verzeichnissen mit Leerzeichen? Wann werden die umbenannt?
mkdir -p erstellt die Verzeichnisse, Umbennenung vor der Dateinamensänderung.
Was machst du bei Namens-Kollisionen?
Gute Frage. In der Praxis kann ich das ziemlich sicher ausschließen. Wie sieht ein find aus, der alle Ordner und Dateien mit Leerzeichen anzeigt? Ich denke, man sollte vor der Änderung eine Übersicht anzeigen was passiert, bzw. vor Kollisionen warnen.
Ansonsten geht's aber. Und besser ohne sed.
Da hast du natürlich recht.
do base="${FILE##*\/}" dir="${FILE%\/*}" new="${base// /_}" target="${dir}/${new}" # if test -e "${target}"; then # echo "Target already exists, skipping '$FILE'" >&2; # continue; # fi mv -i "$FILE" "${target}" done
Bei base/dir/new kannst du auch basename, dirname und tr oder sed verwenden.
base="$(basename "$FILE")" dir="$(dirname "$FILE")" new="$(echo "$base" | tr ' ' '_')"
Vielen Dank! Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org