検索されたファイルの正確なサイズを出力にインポートします。

検索されたファイルの正確なサイズを出力にインポートします。

私のシェルエンジンはビジーボックス1.31.0またはバッシュ3.2

検索されたファイルのサイズを取得する必要があります。探す注文する。

私は60日以上前に修正されたファイルだけを見つけようとし、すべてのファイルのサイズをインポートしました(MB表記で1行にまとめることをお勧めします)。私が試したことは次のとおりです。

find -type f -mtime +60 -print0 | xargs -0 du -smc

そして

find -type f -mtime +60 -exec du -smc {} \;

前者は60日より古いすべてのファイルを1行ずつ検索します(ここまでは問題ありません)、奇妙なことに、すべての行の間でサイズを数回計算し、最後の行には次のものと一致しない「合計」サイズが表示されます。実際の出力の合計サイズです。こんな感じです。

.....
.....
0       ./FOLDER 2018/Copy #183 of ~$DATABASE OTHERS - NOV.18N.xlsx
42      ./FOLDER 2018/F9C8A618.tmp
0       ./FOLDER 2018/Copy #166 of ~$DATABASE PORTFOLIO NOV.18.xlsx
3275    total
10      ./FOLDER 2018/CFDC6981.tmp
2       ./FOLDER 2018/D5AAF4EB.tmp
0       ./LIFE INSURANCE/Copy #15 of ~$Copy of LIFE INSURANCE CLIENTS.xlsx
12      total

後者の出力は、一致する各ファイルのサイズを1行ずつ計算しますが、全体のサイズは計算しません。

私が探しているもの:

    0       ./FOLDER 2018/Copy #183 of ~$DATABASE OTHERS - NOV.18N.xlsx
    42      ./FOLDER 2018/F9C8A618.tmp
    0       ./FOLDER 2018/Copy #166 of ~$DATABASE PORTFOLIO NOV.18.xlsx
    10      ./FOLDER 2018/CFDC6981.tmp
    2       ./FOLDER 2018/D5AAF4EB.tmp
    0       ./LIFE INSURANCE/Copy #15 of ~$Copy of LIFE INSURANCE CLIENTS.xlsx
    54      total

または、すべての行の実際のサイズの結果はありません。

54      total

助けてくれてありがとう。

ベストアンサー1

findtoの出力をパイピングしてフラグをdu付けてみてください。--files0-from -

find -type f -mtime +60 -print0 | du -shc --files0-from -

最後に合計を提供する必要があります

合計を取得するには、出力を次にパイプしますtail -n1

find -type f -mtime +60 -print0 | du -shc --files0-from - | tail -n1

私は実際にこれをbusyboxではなくgnu linuxを使ってテストしたことに言及したいと思います。見ている忙しい箱duページでは、このオプションはサポートされていないようです--files0-from

上記のコマンドを次のように変更して、busyboxで実行することができます。

find -type f -mtime +60 -print0 | xargs -0 du -ch | tail -n1

上記の方法は、名前にスペースと改行文字が含まれているファイルでも機能しますが、コマンドがあまりにも多くのファイルを見つけた場合、正しく機能しない可能性がありますfind。下記をご覧くださいコメント。ファイルが多すぎると思われる場合は、このページで別の回答を試してみてください。

おすすめ記事