検索を使用してすべてのファイルをサイズで並べ替える

検索を使用してすべてのファイルをサイズで並べ替える

練習として、サブディレクトリのパッドを含む、指定された拡張子(.txtなど)を持つすべてのパッドをサイズでソートするスクリプトを完成させる必要があります。

For example; 
./ex1.sh einstein txt
einstein/copyright.txt
einstein/do-how.txt
einstein/etext9/bil11.txt
einstein/etext9/2ws271.txt
einstein/etext9/liber11.txt
einstein/etext0/bib0010h/Readme.txt
einstein/etext0/kknta10.txt

du またはその他の高度なコマンドは使用できません。ある時点では find を使用する必要がありますが、次のことを試しました。

find -depth - type f -name "*.$extension" | sort ....

しかし、サイズでソートする方法がわからないので、これはうまくいきません。私が得た結果は名前でソートされます。

ls -lhSに似ていますが、サブディレクトリを含む出力を探しています。

ベストアンサー1

AFAIKで実行できる唯一の注文は、インクルードfindディレクトリ(オプション)の前にコンテンツを表示することです-depth。サイズで並べ替えるには、別のものを使用する必要があります。

GNUルックアップがある場合は、以下を試してください。

find . -type f -iname "*.$extension" -printf "%s %p\n" | sort -n | sed 's/^[0-9]* //'

-printf "%s %p\n"サイズとファイルパスを印刷して数字でソートし、ストリップサイズを使用しますsed

おすすめ記事