如何在“ls -l”输出之间添加新行

如何在“ls -l”输出之间添加新行

这是标准ls -l输出。

user@linux:~$ ls -l
total 0
-rw-rw-r-- 1 user user 0 Nov   1 00:00 file01
-rw-rw-r-- 1 user user 0 Nov   1 00:00 file02
-rw-rw-r-- 1 user user 0 Nov   1 00:00 file03
user@linux:~$ 

是否可以像这样添加新行?

-rw-rw-r-- 1 user user 0 Nov   1 00:00 file01

-rw-rw-r-- 1 user user 0 Nov   1 00:00 file02

-rw-rw-r-- 1 user user 0 Nov   1 00:00 file03

答案1

ls -l | sed G

(这是一个常见的习语,关于sed常见问题解答)。

或者(可能更快,对于 的(可能很短)输出可能并不重要ls -l):

ls -l | paste -d '\n' - /dev/null

那些在每个之后插入一个空行线的输出ls -l

现在,如果您希望在 描述的每个文件后有一个空行(ls -l如果存在名称包含换行符的文件,则情况会有所不同),您必须执行以下操作:

for f in *; do ls -ld -- "$f" && echo; done

(这也会跳过该total行)。

或者您可以使用ls -ql它来确保每个文件一行(换行符,就像所有控制字符一样,将被呈现为?(至少在 POSIX 语言环境中))。

答案2

使用awk

ls -l | awk '{printf "%s\n\n", $0}'

答案3

NAME
       pr - convert text files for printing

与单个空行交错,不添加标题:

… | pr -dt

答案4

多一个:

ls (options) | while read LINE; do
  echo "$LINE
"
done

相关内容