我有一个名为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
。