GNU/Linux >> Linux の 問題 >  >> Linux

再帰的なファイルリストの深さを制限するには?

-maxdepth をチェックアウト find のフラグ

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

ここでは、最大レベル深度として 1 を使用しました -type d ディレクトリのみを検索することを意味し、これは ls -ld の内容を長い形式でリストします。


find を利用する のオプション

実際には /bin/ls の exec はありません 必要;

検索には、まさにそれを行うオプションがあります:

find . -maxdepth 2 -type d -ls

関心のある 1 レベルのサブディレクトリのみを表示するには、-mindepth を追加します。 -maxdepth と同じレベルまで :

find . -mindepth 2 -maxdepth 2 -type d -ls

出力フォーマットを使用

表示される詳細が異なる場合、 -printf ファイルに関する詳細をカスタム形式で表示できます。シンボリック アクセス権とファイルの所有者名を表示するには、-printf を使用します %M で と %u format で .

グループを含む完全な所有権情報が必要であることに後で気付きました。 %g を使用 記号名の形式、または %G グループ ID (%U など) 数値のユーザー ID の場合)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

これにより、適切なファイルについて、必要な詳細が得られるはずです。

ユーザーとグループで実際に異なる値を示す例を示します:

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(読みやすいように編集:インデント、最後の行を短縮)


パフォーマンスに関する注意事項

この種のコマンドの実行時間はほとんど関係ありませんが、パフォーマンスの向上はここで指摘する価値があるほど大きいです:

名前ごとに新しいプロセスを作成する手間を省くだけでなく、膨大な task - find のように、情報を読み取る必要さえありません。


tree -L 2 -u -g -p -d

ディレクトリ ツリーを深さ 2 までのきれいな形式で出力します (-L 2)。ユーザー (-u) とグループ (-g) と権限 (-p) を出力します。ディレクトリのみを出力します (-d)。その他の便利なオプション。


Linux
  1. テキストファイルで一致しない角かっこを見つける方法は?

  2. デフォルトのファイルマネージャを見つける方法は?

  3. pacman をインストールするためのリスト/ファイルをどのように作成しますか?

  1. Linuxでファイルを見つける方法

  2. Posixの検索を特定の深さに制限しますか?

  3. 特定のプロセスの .pid ファイルを見つける方法

  1. ディレクトリ内のファイルとディレクトリの再帰的なファイルサイズを一覧表示するにはどうすればよいですか?

  2. コミット時にファイルサイズを制限するには?

  3. bashコマンドを使用してフォルダを一覧表示するには?