ls连接到stdout时,它们在一行中返回文件。
$ ls
a b c
当重定向到文件时
$ ls > foo.txt
$ cat foo.txt
a
b
c
我意识到选项-C
$ ls -C > hoge.txt
$ cat hoge.txt
a b c
但是,当文件列表中有很多文件时,ls
将回车符放入列表中。喜欢
a b c d e f g h
i j k l ....
我怎么有
a b c d e f g h i j k l.....(without \n)
我不知道ls
是否为此提供了一个选项,但我没有查过。由于该问题并没有特别要求快速或计算有效的解决方案,因此我建议使用ls
和sed
来合成命令:
ls "$dir" | sed -z 's/\n/ /g'
获取ls
输出,并用空格替换所有换行\n
。需要-z
开关,因为否则sed
将面向行,并且sed
的模式匹配器将永远看不到\n
。如果$dir
中的文件名之一包含空格,则会出现问题。
如果考虑到计算效率,建议您搜索这样的选项(man ls
)或编写一个能够做到这一点的程序(使用例如C
语言)。
这将解决问题:
ls | xargs > foo.txt