在目录顺序中列出查找命令的结果

5

我正在尝试使用find命令从我的工作目录中查找所有以'M*'开头的文件,并按目录顺序显示结果。

但它始终按排序顺序显示结果,这会导致一些更深层次的目录先被列出,因为它们按字母顺序排列。

$ find -name 'M*'
./MyFourth
./s/MyFirst
./s/v/b/MyThird
./s/v/MySecond

我希望以这个顺序展示:
./MyFourth
./s/MyFirst
./s/v/MySecond
./s/v/b/MyThird

感谢您的帮助

Python,Ruby,Perl ...? - Karoly Horvath
https://dev59.com/0nVD5IYBdhLWcg3wAWkO#120701 - Karoly Horvath
2个回答

4
如果我正确理解您所指的“目录顺序”,那么这应该能帮到您:
find -name 'M*' -printf '%p\t%d\n' | sort -n -k2 | cut -f 1

它会按照文件在目录树中的深度进行排序并打印输出。

1
不幸的是,这会将目录内容和其子目录的列表分开。 - blueshift

1
$ find . -name 'M*' | awk -F/ '{print NF,$0}' | sort -k1,1n -k2 | cut -d' ' -f 2-
./MyFourth
./s/MyFirst
./s/v/MySecond
./s/v/b/MyThird

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接