如果文件中有新的行符号,并且我使用了find或ls,则显示为“?”文件名中的符号。但是当我使用|用它来做更多的事情,它会分裂字符串并弄乱一切。我该如何处理?
答案 0 :(得分:2)
根本不管道ls的结果。如你所见,它是不可预测的。请改用find
:
find -maxdepth 1 -exec command {} \;
{}
代表文件名。
或者你也可以使用glob表达式。 glob表达式的结果不是单词拆分的主题,这意味着如果它们包含换行符或空格则是安全的:
for file in ./* ; do
command "$file"
done
然后可以在另一个管道中使用该命令的结果。