Das Problem ist, dass der for-loop die Leerzeichen als Input Field Separator betrachtet. Dies kannst du zum Beispiel umgehen, indem du folgendes machst:
Code:
find . -type -f -and -not -name '*web*' -print0 | while read -d $'\0' file; do; file=${file:2}
Das find ist wohl auch effizienter als in einem ls -A nach einem pattern zu greppen. Danach gibst du die Argumente mit Nullbyte getrennt weiter und sagst read, dass die Argumente Null-Byte-getrennt sind. das file=${file:2} am Schluss schneidet noch das hier überflüssige ./ am Anfang jedes Resultats von find ab.
Danach kannst du auch noch eine weitere Subshell loswerden, indem du
Code:
convertfile="web.${file}"
verwendest.
Zusätzlich brauchst du dann auch noch Anführungszeichen um die Variablen $file und $convertfile im convert-Aufruf, damit die bash dort die Leerzeichen als Teil des Dateinamens akzeptiert.
Das Ganze könnte dann etwa so aussehen:
Code:
#!/bin/bash
find . -type f -and -not -name '*web*' -print0 | while read -d $'\0' file;
do
file=${file:2}
file=$newfile # was macht die Zeile genau? (Typo?)
convertfile="web.${file}"
convert "$file" -geometry 750x750 "$convertfile"
done
Lesezeichen