如何在unix中对ls输出进行编号?
我正在尝试编写一个格式为“id file_absolute_path”的文件,该文件基本上递归地列出文件夹中的所有文件,并为列出的每个文件提供标识符,如 1,2,3,4。
我可以使用以下命令递归地获取文件的绝对路径:
ls -d -1 $PWD/**/*/*
但是,我无法从 ls 命令的输出中给出标识符。我确信这可以使用 awk 来完成,但似乎无法解决它。
I am trying to write a file with format - "id file_absolute_path" which basically lists down all the files recursively in a folder and give an identifier to each file listed like 1,2,3,4.
I can get the absolute path of the files recursively using the following command:
ls -d -1 $PWD/**/*/*
However, I am unable to give an identifier from the output of the ls command. I am sure this can be done using awk, but can't seem to solve it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
通过
cat -n
管道输出。Pipe the output through
cat -n
.假设
x
是您的命令:将对输出行进行编号
Assuming
x
is your command:will number the output lines
两个可能的命令:
nl 将数字放入文件行。
我希望这也能澄清。
Two posible commands:
nl puts numbers to file lines.
I hope this clarifies too.
有一个名为 nl 的工具可以实现这一点。
ls -la | NL
There is a tool named nl for that.
ls -la | nl
如果您执行
ls -i
,您将获得索引节点号,它非常适合用作 ID。使用索引节点的唯一潜在问题是,如果您的文件夹跨越多个文件系统,因为索引节点只能保证在文件系统中是唯一的。
If you do
ls -i
, you'll get the inode number which is great as an id.The only potential issue with using inodes is if you folder spans multiple file systems as an inode is only guaranteed to be unique within a file system.
ls -d -1 $PWD/**// | awk ' {x = x + 1} {print x " " $0} '
ls -d -1 $PWD/**// | awk ' {x = x + 1} {print x " " $0} '