2017-05-27 35 views
1

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

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

通常情况下,按大小排序的文件列表与做:

ls -lS *.$1 

在任何情况下,sort -S是没有意义的。 -Sls的选项;它意味着sort。 (和别的东西是完全不相干的在这里。)

如果你想只是文件名列表,通过文件大小排序,使用

ls -S *.$1 

和管道将它导入任何你想使用的格式。

+0

我不使用ls的原因是因为我想从数组中自定义格式打印。无论如何,我可以按阵列大小排序? – CarlinLiu

+0

@ CarlinLiu:基本上没有。请让你的用例更清楚(编辑你的问题。) – rici

+0

感谢您的帮助。我只是将ls设置为一个变量并在for循环中使用它! – CarlinLiu