bash - 按深度排序文件 (bash)

标签 bash sorting

在 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/

相关文章:

python - 如果一行包含专用区域字符,如何删除它?

android - 如何在 Spinner 中设置订单数据

sorting - 如何按日期对 SVN LS -R 输出进行排序

java - PriorityQueue 不是 'polling' 优先级对象,或者我在 CompareTo 方法中存在逻辑错误

javascript - 如何显示 "npm outdated"current != wanted lines only?

建立网络时执行的 Bash

bash - 试图删除我的 .git 文件夹和 'rm -r .git --force' 不起作用

java - 使用 Lambda 对列表进行排序和分组

java - O(N) 排序算法

bash - 在 bash 中查找和删除 .txt 文件