私のホームディレクトリで3日未満のすべてのファイルを見つけて、そのファイルの総文字数を取得するスクリプトをどのように作成できますか?
答え1
答え2
これはとても簡単です。
find ~/ -mtime -3 -exec cat {} + | wc -c
上記の転送は各ファイルのすべての文字を計算しますwc
。
ファイルが大きい場合、上記の操作にはディスクから読み取る操作がたくさん含まれます。単にファイルのサイズだけを追加すると、より効率的になります。ファイルサイズの取得方法はUnixのバージョンによって異なります。ただし、システムがLinuxスタイルのstat
コマンドをサポートしている場合は、次のことが機能します。
find . -mtime -3 -type f -exec stat -c%s {} + | awk '{total+=$1} END{print total}'
上記では、stat -c%s
各ファイルのサイズを返し、awk
一緒に追加して合計を報告します。これにより、各ファイルを完全に読み取る必要がなくなります。
答え3
この試み
find ./ -type f -mtime -3 -exec wc -c {} \; | perl -lane 'BEGIN {$total=0}; $total+=$F[0]; END {print $total}'
はい
❮njia@mb-125:~/src/ansible/roles❯➤ find ./ -type f -mtime -3 -exec wc -c {} \;
12288 ./base/tasks/.check_glibc.yml.swp
185 ./base/tasks/check_glibc.yml
❮njia@mb-125:~/src/ansible/roles❯➤ find ./ -type f -mtime -3 -exec wc -c {} \; | perl -lane 'BEGIN {$total=0}; $total+=$F[0]; END {print $total}'
12473