如何在unix中对ls输出进行编号?

时间:2010-05-27 19:30:59

标签: awk unix

我正在尝试编写一个格式为“id file_absolute_path”的文件,该文件基本上在文件夹中递归列出所有文件,并为列出的每个文件提供一个标识符,如1,2,3,4。

我可以使用以下命令递归获取文件的绝对路径:

ls -d -1 $PWD/**/*/*

但是,我无法从ls命令的输出中提供标识符。我确信这可以使用awk完成,但似乎无法解决它。

6 个答案:

答案 0 :(得分:15)

通过cat -n管道输出。

答案 1 :(得分:7)

假设x是你的命令:

x | awk '{print NR, $0}'

将对输出行进行编号

答案 2 :(得分:5)

两个可能的命令:

ls -d -1 $PWD/**/*/* | cat -n
ls -d -1 $PWD/**/*/* | nl

nl将数字放到文件行中。

我希望这也澄清了。

答案 3 :(得分:2)

有一个名为nl的工具。

ls -la | NL

答案 4 :(得分:1)

如果你ls -i,你会得到一个非常棒的inode号码。

使用inode的唯一潜在问题是,如果您的文件夹跨越多个文件系统,因为inode只能保证在文件系统中是唯一的。

答案 5 :(得分:0)

ls -d -1 $ PWD / ** / / | awk'{x = x + 1} {print x“”$ 0}'