Ich hab ein script welches ungefähr so ausschaut:
Code: Alles auswählen
function foo {
// Mach irgendwas
stat "$1"
}
find ./ -not -type d -print0 | while read -d $'\0' file; do
foo "$file"
done
Code: Alles auswählen
.foo\run\blablabla.txt
Ergebnis ist dann:
stat: cannot stat './.foorunblablabla.txt': No such file or directory
Das hier hilft mir auch nicht: http://stackoverflow.com/a/1934478/446140
weil dann der \r interpretiert wird und nicht \\:
Code: Alles auswählen
$ while read -d '' -r file; do echo "$file"; printf -v name "%q" "$file"; echo "$name"; done< <(find -print0)
.
-v
ulablabla.txt
-v
$ find -print0 | while read -d '' -r line; do echo -en "--[${line}]--\t\t"; echo "$line"|sed -e ':t;N;s/\n/\\n/;bt' | sed 's/\([ \o47()"&;\\]\)/\\\1/g;s/\o15/\\r/g'; done
--[.]-- .
ulablabla.txt]-- ./.foo\rulablabla.txt
edit: Scheinbar scheint das hier stabil zu funktionieren:
Code: Alles auswählen
function foo {
// Mach irgendwas
stat "$1"
}
find ./ -not -type d -print0 | while IFS= read -r -d '' file; do
foo "$file"
done