2017-05-27 36 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