在shell脚本中获取带有序列号的目录列表

时间:2015-05-08 08:55:43

标签: linux shell

我想用序列号列出主目录中的所有子目录。

示例:

如果目录A包含B,C,D和E作为子目录,则输出应该类似于

1 B
2 C
3 D
4 E

4 个答案:

答案 0 :(得分:0)

您可以使用循环:

$((++i))

模式匹配A中的所有目录。$i为每个找到的目录将变量{{1}}递增1。

答案 1 :(得分:0)

这取决于您想要对数字做什么。如果您计划进一步/稍后使用它,并且任何人都可以在查看列表和使用该号码之间制作或删除目录,那么您将遇到麻烦。

如果是这种情况,您可以使用这样的目录的inode编号,因为它们在整个文件系统中是常量且唯一的:

ls -di */
19866918 f/ 19803132 other/ 19705681 save/

在Mac上,您也可以

stat -f '%i %N' */
19866918 f/
19803132 other/
19705681 save/

我认为Linux等价物是

stat -c '%i %N' */

答案 2 :(得分:0)

使用它:

find * -type d | nl

find * -type d:打印当前路径中所有目录的名称

nl:在输出中添加行号

答案 3 :(得分:0)

ls | nl; 其中ls用于列出目录文件,nl用于编号行