On 28.04.2008 12:01, Andre Tann wrote (please find the answer below the original text):
Hallo zusammen,
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
Es kommt immer die Fehlermeldung, daß die gesuchte Datei nicht gefunden werden konnte, wobei der aufgeführte Name ein & enthält. Dabei ist der Name aber korrekt von " umschlossen worden, was ich auf diese Weise sehe:
find . -iname '*&*' | while read xx; do echo mv "\"$xx\"" "'$(echo $xx | sed 's/&/_/g')'"; done
Woran fehlt es?
Experiment auf Basis des find outputs: find . -name 'a*' ./abc ./ab c ./a&bc set -x; find . -name '*&*' | while read xx; do mv "$xx" "'$(echo $xx |sed 's/\&/_/g')'"; done; set +x + find . -name '*&*' + read xx ++ echo './a&bc' ++ sed 's/&/_/g' + mv './a&bc' ''\''./a_bc'\''' mv: cannot move `./a&bc' to `\'./a_bc\'': No such file or directory + read xx + set +x set -x; find . -name '*&*' | while read xx; do mv "$xx" "$(echo $xx |sed 's/\&/_/g')"; done; set +x + find . -name '*&*' + read xx ++ echo './a&bc' ++ sed 's/&/_/g' + mv './a&bc' ./a_bc + read xx + set +x Roman hat Recht: es sind also die ' um den zweiten mv Operanden zu viel! Allerdings heißen diese hier ` Backticks. Er meint wohl eher die Ticks, also diese ' . -Ingo. -- 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