2017-08-08 92 views
1

所以我有很多音乐项目组织在自己的文件夹中。每个项目都有一个文件,album.inf。有些项目拥有自己的文件夹,有些项目位于其他项目中的其他项目等等,每个项目都有自己的album.inf。我想解析每个album.inf文件中的一些信息,但我需要从最深层次的文件开始。如何从“最深”版本开始列出每个album.inf文件?这可能没有写一个冗长的脚本或函数?执行此操作的最佳方法是什么?无数文件夹中的相同文件的副本...如何找到最深的副本?

+0

欢迎来到SO!看看这篇文章如何问一个更有可能回答的问题:https://stackoverflow.com/help/how-to-ask –

+0

'find。 -depth -name album.inf -print'? – twalberg

+0

经过一些测试,这似乎应该工作。我可以澄清一下,我从'album.inf'的最深迭代开始并不重要,但是每个迭代的目录没有其中存在另一个'album.inf'的子目录。那有意义吗?在那种情况下,我认为这完全是正确的解决方案。谢谢! – Johnny

回答

2

使用findsort你可以得到文件的一个很好的列表,遍历:

find . -name "album.inf" -printf '%d %p\n' | sort -rn 

随着printf%d是“深度”和%p令牌文件名令牌,这只是通过管道输送到排序给你的名单排序数字降序

+0

如果你使用GNU'find'和'sort',你可以使所有文件名都安全,包括那些包含换行'printf'%d %p \ 0'| sort -rnz'。 –