我能对文件名中的新行做些什么



如果一个文件中有换行符,并且我使用find或ls,它在文件名中显示为"?"符号。但当我用|对它做更多的事情时,它会分裂字符串,把所有东西都搞砸。我该如何处理?

根本不通过管道传输ls的结果。正如你所见,这是不可预测的。改为使用find

find -maxdepth 1 -exec command {} ;

{}表示文件名。

或者,您也可以使用glob表达式。glob表达式的结果不受分词的影响,这意味着如果它们包含换行符或空格,则是安全的:

for file in ./* ; do
    command "$file"
done

然后,该命令的结果可以在另一个管道中使用。

相关内容

最新更新