Shell Script カテゴリを作った方がいいかも。
[nuts@cclub mail]$ sh -c 'for i in `ls -la | grep -E "\-rw\-+\W+1 \w+\W+[0-9]{3}" | perl -pe "s/.+ (\w+)/\1/g"`; do echo chown :cclub $i; done' chown :cclub bar chown :cclub baz : :
[nuts@cclub mail]$ sudo sh -c 'for i in `ls -la | grep -E "\-rw\-+\W+1 \w+\W+[0-9]{3}" | perl -pe "s/.+ (\w+)/\1/g"`; do echo chown :cclub $i; done' Syntax error: "|" unexpected
[nuts@cclub mail]$ sudo sh -c 'for i in `ls -la \ | grep -E "\-rw\-+\W+1 \w+\W+[0-9]{3}" \ | perl -pe "s/.+ (\w+)/\1/g"`; do echo chown :cclub $i; done' chown :cclub bar chown :cclub baz : :
行末に "|" が来る場合はいいけど、行頭に "|" が来る場合は行末の改行を "\" でエスケープしなければならない。
というか、
[nuts@cclub mail]$ sh -c 'for i in `ls -la | \ grep -E "\-rw\-+\W+1 \w+\W+[0-9]{3}" | \ perl -pe "s/.+ (\w+)/\1/g"`; do echo chown :cclub $i; done' chown :cclub bar chown :cclub baz : :
結局いつも改行はエスケープするようにしておけば心配ない。