echo命令将空白变为新行



如何列出文件名中有空格的文件,并将它们全部放入一个文本文件中。不幸的是,下面的命令会把所有的空格变成新的行,例如filename aba.txt会变成:

filename
aba.txt

我想输出:

filename aba.txt
我使用的命令是:
$ for f in `ls -v *.txt`; do echo "$f"; done >> Output.txt

我认为通过用引号包围$f,每次文件名中有空格时都不会创建新行。显然不是。

您可以使用显式分隔符(到'n')管道到xargs:

ls -1 *.txt | xargs -n 1 --delimiter 'n' echo > output.txt

注意#1:ls -1将每行列出一个条目

注意#2:如果你不想转换文件名,你可以省略xargs阶段(它允许你通过-I{}做基本的字符串操作),直接发送到输出文件:
ls -1 *.txt > output.txt
man echo
...
-n     do not output the trailing newline

谢谢卡雷尔,我一直在努力。

tr 'n' ' '  list.txt

将把列表中的单词和空格放在一起

最新更新