输出到文件时,在一行中输出ls的结果

问题描述 投票:1回答:3

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)
linux ls
3个回答
2
投票

我不知道ls是否为此提供了一个选项,但我没有查过。由于该问题并没有特别要求快速或计算有效的解决方案,因此我建议使用lssed来合成命令:

ls "$dir" | sed -z 's/\n/ /g'

获取ls输出,并用空格替换所有换行\n。需要-z开关,因为否则sed将面向行,并且sed的模式匹配器将永远看不到\n。如果$dir中的文件名之一包含空格,则会出现问题。

如果考虑到计算效率,建议您搜索这样的选项(man ls)或编写一个能够做到这一点的程序(使用例如C语言)。


1
投票

这将解决问题:

ls | xargs > foo.txt

1
投票

尝试以下解决方案,

echo -E $(ls -1 dir) > file.txt

where

-1单列打印o / p

-E禁止反斜杠转义的解释

来源:this服务器故障页面

© www.soinside.com 2019 - 2024. All rights reserved.