/media/data/Selbstgemachtフォルダに家族の写真と映画があり、すべての写真のサイズを知りたいです。 /media/dataで私はfind Selbstgemacht -type f -iname '*.jpg' -exec du -ch '{}' +
それを使用して5,1GBを返します。
ところで、「Selbstgemacht」フォルダに入って使用すると、find . -type f -iname '*.jpg' -exec du -ch '{}' +
7.0GBが出ます。
次に、findの出力を比較して、同じファイルが見つかったことを確認します。親
フォルダからサブフォルダfind Selbstgemacht -type f -iname '*.jpg' -printf '%P\n' |sort > test1.txt
へ
find . -type f -iname '*.jpg' -printf '%P\n' |sort > ../test2.txt
ファイルは同じなので、両方の find コマンドはまったく同じファイルを探します。したがって、duが報告したサイズの違いは、他の原因によるものと考えられます。
ここで理由は何ですか?
システムメッセージ:
- Debian 安定版
- 検索(GNU findutils)4.4.2
- D_TYPE O_NOFOLLOW(有効化)
- LEAF_OPTIMISATION、FTS()、CBO(レベル= 0)
- du(GNU coreutils) 8.13
ベストアンサー1
find ... -exec cmd {} +
cmd
コマンドに渡される引数のサイズ制限に違反しないように、必要な回数だけ実行されます。
使用時find . -exec du {} +
のファイルリストのサイズが使用時よりも小さくなりますfind verylongdirname -exec du {} +
。
したがって、このコマンドよりも多くのコマンドfind verylongdirname
が実行される可能性が高くなります。最後に表示される合計は、すべてのファイルを除く最後の実行の合計です(より多くのものです)。du
find .
du
銃以前は確認のためにコマンドをパイプできましたgrep 'total$'
。