Since only your interactive shell knows about aliases, why not just run the alias without forking out through xargs
?
find . -iname '.#*' -print0 | while read -r -d '' i; do foobar "$i"; done
If you're sure that your filenames don't have newlines in them (ick, why would they?), you can simplify this to
find . -iname '.#*' -print | while read -r i; do foobar "$i"; done
or even just find -iname '.#*' | ...
, since the default directory is .
and the default action is -print
.
One more alternative:
IFS=$'
'; for i in `find -iname '.#*'`; do foobar "$i"; done
telling Bash that words are only split on newlines (default: IFS=$'
'
). You should be careful with this, though; some scripts don't cope well with a changed $IFS
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…