文字列を含むファイルを除く合計ディスク使用量を見つける

文字列を含むファイルを除く合計ディスク使用量を見つける

owncloud名前/ディレクトリにnobackup文字列を含むファイルとディレクトリを除いて、ディレクトリのディスク使用量を取得しようとしています。

これはこれまで私のコマンドです。

find . -type f -not -regex '.+?nobackup.*'  -exec du -c {} +  

ただし、クラウドディレクトリで使用すると誤った合計が表示され、テストディレクトリでは正常に動作します。

ベストアンサー1

ORを使用すると、ORはfind ... -exec COMMAND {} +各コマンドで定義されたバッファースペースよりも長くないファイル名引数のリストを作成します(に制限されています)。バッファスペースが不足すると、各コマンドにファイル名引数のリストが渡され、新しいリストの生成が開始されます。このプロセスはファイル名がなくなるまで必要なだけ繰り返され、この時点でビルド中のファイル名のリストが最終時間に渡されます。find ... -print0 | xargs -0 COMMANDxargsfindARG_MAXCOMMANDCOMMAND

findしたがって、コマンドが大量のファイル名を返したくない場合

find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +  

それで十分だと思います。あなたがあなたのduサポートを受けている場合は、nullで終わる--files0-fromものを直接読む方法を使用できます(これが次のことを意味すると思います)。--files0-from=-filesstdindu-stdin

find . -type f -not -regex '.+?nobackup.*' -print0 | du -c --files0-from=-

注:--files0-from指定されていませんが、posix最新バージョンgnu duでは拡張する必要があります。実装からこれを省略した場合、何らかの方法で結果を繰り返して、findループに合計を追加する必要があります。

おすすめ記事