在 bash 中有没有一种方法可以将我的文件从目录中按深度顺序向下排序,例如首先打印当前目录中的文件,然后打印子目录中的文件等等,总是透视他们的深度。
最佳答案
将查找的“-printf”功能与排序结合使用。自己看看:
find . -printf "%d %p\n"|sort -n
它生成一个深度排序列表(第一列显示深度,第二列显示文件路径)。这打印在我当前的目录中:
0 .
1 ./bin
1 ./log
1 ./templates
2 ./bin/cc_env
3 ./files/test/mail.txt
如果你想去除第一列,我们可以使用perl:
find . -printf "%d %p\n"|sort -n|perl -pe 's/^\d+\s//;'
然后开始吧。 perl 过滤器将删除所有前导数字。如果您想省略目录本身,请使用“-type f”参数:
find . -type f -printf "%d %p\n"|sort -n|perl -pe 's/^\d+\s//;'
提示:研究 find 联机帮助页以获得更多类似 printf %d 的技巧。
关于bash - 按深度排序文件 (bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703979/