Mailinglist Archive: opensuse-de (1027 mails)

< Previous Next >
Re: Frage zu find und sed und Quoten
  • From: David Haller <lists@xxxxxxxxxx>
  • Date: Mon, 28 Apr 2008 15:55:55 +0200
  • Message-id: <20080428135555.GB3823@xxxxxxxxxxxxxxxxxx>
Hallo,

Am Mon, 28 Apr 2008, Andre Tann schrieb:
ich möchte alle Dateien suchen, die ein & im Namen haben, und dieses
durch _ ersetzen. Warum funktioniert das hier nicht:

find . -iname '*&*' | while read xx; do mv "\"$xx\"" "'$(echo $xx |
^^ ^^ ^
sed 's/&/_/g')'"; done
^
Was sollen diese Anführungszeichen?

[..]
Woran fehlt es?

An der systematischen Herangehensweise was das Quoten angeht.

find . -iname '*&*' | while read -r xx; do \
mv -i "$xx" "$(echo "$xx" | sed 's/&/_/g')"
done

oder:

find . -iname '*&*' | while read -r xx; do \
mv -i "$xx" "$(echo "$xx" | tr '&' '_')"
done

oder:

find . -iname '*&*' | while read -r xx; do \
mv -i "$xx" "`echo \"$xx\" | tr '&' '_'`"
done

Das 'mv -i' falls der neue Dateiname bereits existiert.

Man beachte den Unterschied zwischen `` und $(). Innerhalb von ``
müssen die inneren "" escped werden, innerhalb von $() nicht.

Und wieder, wie schon von anderen angemerkt: set -x hilft dabei,
solche Probleme zu erkennen.

-dnh

--
Er will sie nicht?
Er, will sie nicht?
Er will, sie nicht?
Er will sie, nicht? -- Sascha Broich

--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups
References