我使用ls -a命令获取目录中的文件名,但是输出在一行中。

是这样的:

.  ..  .bash_history  .ssh  updater_error_log.txt

我需要一个内置的替代方法来获取文件名,每一个在一个新的行,像这样:

.  
..  
.bash_history  
.ssh  
updater_error_log.txt

当前回答

使用-1选项(注意这是一个“一”数字,而不是小写字母“L”),像这样:

ls -1a

不过,首先要确保ls支持-1。GNU coreutils(安装在标准Linux系统上)和Solaris;但如果有疑问,请使用man ls或ls——帮助或查看文档。例如:

$ man ls
...
       -1     list one file per line.  Avoid '\n' with -q or -b

其他回答

是的,你可以很容易地让ls每行输出一个文件名:

ls -a | cat

解释:ls命令会检测输出是到终端还是文件或管道,并相应地进行调整。

所以,如果你将ls -a管道到python,它应该可以工作,不需要任何特殊措施。

你可以用ls -1

Ls -l也会做功

ls | tr "" "\n"

你也可以用ls -w1

这允许设置列的数量。 来自ls的manpage:

   -w, --width=COLS
          set output width to COLS.  0 means no limit

-1开关是显而易见的方法,但只是提一下,另一个选项是使用echo和双引号内的命令替换,保留空白(这里\n):

echo "$(ls)"

这里还提到了ls命令的行为:

如果标准输出是一个终端,则输出按列(排序)排列 垂直方向)和控制字符输出为问号; 否则,每一行和控制字符列出一个输出 按原样输出。

现在您知道为什么重定向或管道输出每行一个了。