我有一个名为c的数组。 它的元素是在当前目录中找到的文件名。我如何在他们自己的行上列出他们之前的数字? 例如:
1. aaa
2. filename2
3. bbb
4. asdf
我现在的代码只是在自己的行上打印每个文件。像:
aaa
filename2
bbb
asdf
我的代码如下:
#!/bin/bash
c=( $(ls --group-directories-first $*) )
printf '%s\n' "${c[@]}"
答案 0 :(得分:1)
从数组c
开始,有以下三种方法:
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
。
答案 1 :(得分:1)
这应该有效:
for (( i=0; i<${#c[@]}; i++)); do
printf '%d. %s\n' $((i+1)) "${c[$i]}"
done