On Sam, 28 Jun 2003 at 14:25 (+0200), Wolfgang Erlenkötter wrote:
ich teste gerade ein Skript und verstehe nicht, warum es nicht so funktioniert, wie es sollte:
Mit find . -type f -maxdepth 1 -print|sed 's/ /\\ /g' auf der Kommandozeile erhalte ich:
./KARL ./karl ./paul ./ott.sh ./Diese\ Datei ./teste.tar
(Die Dateien im aktuellen Verzeichnis) Das heißt, die Leerstelle in dem Dateinamen Diese Datei soll geschützt werden.
Baue ich das ganze in ein Skript:
for FILE in `find . -type f -maxdepth 1 -print|sed 's/ /\\ /g'`; do echo -n "File: $FILE -> " if [ -e $FILE ]; then echo -e "\033[32mOK\033[m" else echo -e "\033[31mERROR\033[m" fi done
find . -type f -maxdepth 1 -print | while read FILE; do echo -n "File: $FILE -> " if [ -e "$FILE" ]; then echo -e "\033[32mOK\033[m" else echo -e "\033[31mERROR\033[m" fi done Außerdem solltest Du Dir mal die Option -print0 des find in Verbindung mit der Option -0 von xargs näher anschauen. BTW: Was bezweckst Du mit dem Konstukt? find liefert _existierende_ Dateien, die Du anschließend auf Existenz überprüfst? IMHO doppelt gemoppelt. Jan