我想要获得一个文件编号列表,例如如果我有以下这些文件:
a.pdf
b.pdf
c
那么它应该列在以下位置:
1 a.pdf
2 b.pdf
3 c
ls -1 | awk '{print NR,$0}'
第二种方法: ls -1 | cat -n
ls -l
几乎从来不是一个好主意,因为这会破坏文件名中包含空格的情况。 - Reinstate Monica Pleasels
命令中加上 -1
标志。 - Florisls
的输出(你确实需要这样做),你可以像下面这样做:$ counter=1; for f in *; do printf "%2d %s\n" $((counter++)) "$f"; done
1 a.pdf
2 b.pdf
3 c
如果您的系统有nl
命令,那么将更容易。 (我可以确认nl
命令存在于Cygwin、AIX和Solaris系统中,因此它应该是大多数Unix系统中常用的命令)
ls |nl
不确定为什么需要使用 awk
,但是这里有:
ls | awk '{print NR, $0}'
更新 $0
比 $1
更好,因为它将打印包含空格的完整文件名(正如 BroSlow 所示)。
注意- 当输出是另一个进程时,您不需要使用 -1
标志与 ls
。它将成为默认选项。只有当您想要强制在每行一个文件的终端输出时才需要使用它。
Floris
所说的。我也不确定为什么你接受了那个答案,它使用的 awk
是相当冗余的,并且会破坏带有空格的文件名。 - Reinstate Monica Pleasels -1 | cat -n
。ls -1 | awk '{printf "%d %s\n", NR, $0;}'