我有一个名为c的数组。
它的元素是在当前目录中找到的文件名我如何在他们自己的行中列出他们之前的号码?
例如:

1. aaa
2. filename2
3. bbb
4. asdf

我现在拥有的代码只是在自己的行上打印每个文件。比如:
aaa
filename2
bbb
asdf

我的代码如下:
#!/bin/bash
c=( $(ls --group-directories-first $*) )

   printf '%s\n' "${c[@]}"

最佳答案

从arrayc开始,有三种方法:
使用cat -n
cat实用程序将对输出行进行编号:

$ cat -n < <(printf "%s\n" "${c[@]}")
     1  aaa
     2  filename2
     3  bbb
     4  asdf

使用bash
此方法使用shell算法对行进行编号:
$ count=0; for f in "${c[@]}"; do  echo "$((++count)). $f"; done
1. aaa
2. filename2
3. bbb
4. asdf

使用nl
在评论中,twalberg建议使用nl
$ nl < <(printf "%s\n" "${c[@]}")
     1  aaa
     2  filename2
     3  bbb
     4  asdf

实用程序nl有许多选项可用于精确控制编号方式,例如,左/右对齐、包含前导零。见man nl

10-05 20:10