我正在尝试使用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
感谢您的帮助
答案 0 :(得分:4)
如果我正确理解“目录顺序”的含义,这应该会有所帮助:
find -name 'M*' -printf '%p\t%d\n' | sort -n -k2 | cut -f 1
它打印在目录树中按深度排序的文件。
答案 1 :(得分: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