検索でファイルとフォルダのプロパティを表示する方法

検索でファイルとフォルダのプロパティを表示する方法

私はそれが簡単だと思ったし、インターネット上にやや似たようなスレッドがたくさんありますが、完全に合うものはありません。

(簡単なfindコマンド)を使用して、検索結果のファイル名とファイルサイズのみを表示したいfd(MB単位またはバイトより読みやすい形式が望ましい)。

私が得た最も近いのは、次を使用することです。

fd '2023' -x stat --format='%n : $s'

これはファイルでは機能しますが、ディレクトリでは機能しないようです。

例えば

fd --type d '2023' -x stat

パイプを弾いてみました。teeしかし、xargs初心者として私は幸運ではありません。

ファイルとフォルダの出力を表示する方法と、バイトを適切な単位でフォーマットする方法についてのアイデアはありますか?

ありがとう

答え1

必要なのは、ディレクトリファイルのサイズではなく、これらのディレクトリとそれらを参照して見つけることができるすべてのファイルの累積サイズまたはディスク使用量のようです。

その後、次のことができます。

fdfind --type d 2023 -X du -sh --

(Debianとその派生物のコマンド名は、まったく関係のないものに対するfdfind既存のコマンドがあるため、ここで使用されます。これがシステムで呼び出される方法の場合は、その名前に置き換えてください。)fdfd

dこれはisk usage用です。サイズの代わりに--apparent-sizeオプションを追加してください。du

duファイルが複数のディレクトリ(ハードリンクまたは同じパスを介して)にある場合は、いくつかの重複排除が実行され、ファイルのディスク使用量は一度だけ計算されます。たとえば、ディレクトリがある場合は、サブディレクトリとその中のすべてのファイルが親ディレクトリのレポートで考慮されるため、サブディレクトリのディスク使用量を確認2023/2023できます。02023

を使用して重複排除を無効にできます--count-links

一致するディレクトリでより多くのファイル検索を停止する--pruneオプションを渡すこともできます。fdfind

--ファイルからオプションを分離する必要があることに注意してください(オプションがないと、名前で指定されたファイルに問題が発生します(-2023たとえば、潜在的な情報開示の脆弱性につながる)。ほとんどのコマンド--files0-from=2023/etc/shadowにも同じことが当てはまります。stat

そして、できるだけ多くのファイルパスを渡す-Xのではなく、-xforはdu各ファイルに対して新しいプロセスで一度実行されます。du一致するファイルが多いと、複数回呼び出され、上記の重複排除を信頼できなくなる可能性があります。ファイルリストを渡すより良い方法は、このオプションを使用して標準入力を使用duすることです。その後、累積値を取得するオプションを追加することも--files0-fromできます。-ccみんな最後の行:

fdfind --type d --print0 2023 | du --files0-from=- -sch --

-h--human-readable)、--count-linksおよび--files0-from--apparent-sizeすべてGNUによって実装された非標準拡張ですdu-h今日、他の実装では一般的ですが、他の実装ではよりまれです(--human-readable長い形式のインクルード)。-h


1 ディレクトリを次のように考えます。電話帳例えば。多くのファイルシステムでは、これはCSVファイルと少し似ています。ここで、ある列にはファイル名のリストが含まれ、別の列にはディスクのファイル名(inode番号)のリストが含まれます(時には3番目の列がファイルの種類を表します)。他のファイルと同様に、ディレクトリ/csvファイルには独自のサイズとディスク使用量があり、これはgstat -c %sORgfind -printf %sとして報告されますls -l

関連情報