echo 命令将空格变成新行

echo command turns whitespace into new line

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

filename
aba.txt

我要输出:

filename aba.txt

我使用的命令是:

$ for f in `ls -v *.txt`; do echo "$f"; done >> Output.txt

我认为通过用引号将 $f 括起来,每次文件名中出现 space 时都不会创建新行。显然不是。

man echo
...
-n     do not output the trailing newline

谢谢卡雷尔,我很努力。

tr '\n' ' '  list.txt

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

您可以使用显式分隔符(到“\n”)传送到 xargs

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

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

注#2:如果你不想转换文件名,你可以省略 xargs 阶段(它允许你通过 -I{} 进行基本的字符串操作),然后发送直接输出文件:

ls -1 *.txt > output.txt