ディレクトリを調べてazで始まる各ファイルについて、そのファイルの合計サイズを印刷する簡単な方法はありますか?
例えば
for i in {97..122}; du (something); done
出力されます >>
a-123kb
b-22kb
...
z-1245kb
ベストアンサー1
これはワイルドカードを使用して達成できます。
$ du [a-z]*
456 asdf.png
12 awk.trace
28 blink_image_resources_200_percent.pak
0 Books
globに展開されたアイテムがディレクトリの場合、そのディレクトリdu
の内容は巡回されるため、別のアイテムのリストではなく、ディレクトリの合計サイズにのみ興味がある場合はこれを行うことができますdu -s [a-z]*
。たとえばk
、人が読めるサフィックスが必要な場合は、オプションをM
使用します-h
。
もちろん、シェルはシェルオプションとファイル名のマッチングのための再帰パトロールを通じて、より細かいパターンマッチングを好んでbash
います。再帰的で細かいファイル名の一致にコマンドを使用することも、ディレクトリを除外するためにも使用できます。ksh
bash
extglob
globstar
find
find . -maxdepth 1 -mindepth 1 -type f -exec du -s {} \;
中括弧拡張は、パス名拡張、つまりすでにディレクトリにあるエントリ、現在の作業ディレクトリに存在する可能性がある、または存在しない可能性があるトークンリストへの拡張を実行しないことにも注意する{0..9}
価値があります。*
{0..9}