如何根据文件名长度和子目录对文件排序?

时间:2019-01-27 02:57:03

标签: bash unix

我正在尝试查看一个名为Forever的目录,其中包含带有PureMineral的子目录,这些子目录充满了.csv文件。我能够看到目录中的所有.csv文件,但是我很难根据文件名的长度对它们进行排序。

关于当前目录,我在Forever。所以我正在看两个子目录PureMineral

我所做的是:

find -name ".*csv" | tr ' ' '_' | sort -n -r

这只是按字母顺序对文件进行排序,而不考虑文件的长度。(我不得不截断文件的名称,因为它们之间有空格。)

1 个答案:

答案 0 :(得分:1)

我认为这个答案比标记重复项更有用,因为它也考虑了子目录(被骗者没有):

find . -name '*.csv' -exec bash -c 'echo -e $(wc -m <<< $(basename {}))\\t{}' \; | sort -nr | cut -f2

使用fd -e csv -x ...的FWIW对我来说要快很多(0.153秒与find的2.084秒)

即使basename删除了文件ext,也没关系,因为find确保所有文件都具有