Bash脚本按大小排序文件数组

时间:2017-05-27 23:06:26

标签: bash shell sorting

我想按照大小对我目录中的文件进行排序。目前我已经找到了具有特定扩展名(即)* .txt的所有文件,然后将该列表中的所有值添加到我的未排序数组中。我尝试按大小排序数组中的所有元素,但最后一行的“-S”给出了错误。

list=$(find . -name "*."$1)
unsortedA=()
for x in $list
do
    unsortedA+=($x)
done

sortedA=( $(for arr in "${unsortedA[@]}" 
do
        echo $arr
done | sort -S) ) #This Line Here*

编辑:所有这些行都可以替换为:

list=$(ls -S *.$1)

1 个答案:

答案 0 :(得分:2)

通常,按大小排序文件列表:

ls -lS *.$1

无论如何,sort -S毫无意义。 -Sls的选项;它对sort意味着别的东西。 (而且这里的其他东西完全不相关。)

如果您只想要文件列表,按文件大小排序,请使用

ls -S *.$1

并将其输入您想要用于格式化的任何内容。