ls -ldを使用してLinuxでディレクトリを表示すると、次の結果が表示されます。
user@shell:~/somedirectory$ ls -ld
drwxr-xr-x 2014 K-rock users 65536 20011-11-05 11:34
user@shell:~/somedirectory$
somedirectory
上記の結果を使用して、サブディレクトリとファイル数をどのように見つけることができますか?私が理解したところによると、リンクの数はサブディレクトリの数に対応しますが、ファイルの数はどうですか?ls -ld
この数字を見つけるために結果をどのように読むべきですか?
また、上記の結果を使用して、特定のディレクトリのファイルとサブディレクトリの数を知らせる必要があります。残念ながら、他のコードは実際には使用できません。
答え1
得られた出力でパスワードを復号しようとするので、作業を簡素化しようとします。
ls -ld
drwxr-xr-x 4 root root 4096 Nov 11 14:29 .
これで、ls -ld
上記の出力がディレクトリに提供されます。今集中する必要があるのは数字4です。 4は以下に対応します。
- 親ディレクトリにあるディレクトリエントリ。
- ディレクトリ自体エントリ
.
。 ..
ディレクトリ内の2つのサブディレクトリにあるエントリ。
これを確認するために、次のコマンドを実行すると、ls
より多くのディレクトリがあることがわかります。したがって、これはあなたのケースの結果から何を解釈できるかについてのアイデアを提供します。
drwxr-xr-x 2014 K-rock users 65536 20011-11-05 11:34
内部には2012のサブディレクトリがあるため、出力に2014が表示されます。
ファイル数は出力にありません。
私の理論が正しいかどうかをテストするために、次のテストを実行しました。
ls -la | grep -E '[d]' #Display only directories
drwxr-xr-x 12 root root 4096 Nov 11 14:42 .
drwxr-xr-x 4 root root 4096 Nov 11 14:20 ..
drwxr-xr-x 3 root root 4096 Nov 11 14:45 hello1
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello2
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello3
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello4
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello5
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello6
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello7
drwxr-xr-x 2 root root 4096 Nov 11 14:42 hello8
drwxr-xr-x 2 root root 4096 Nov 11 14:21 hello-subdir
drwxr-xr-x 2 root root 4096 Nov 11 14:29 spaced hello
これでls -ld
コマンドを実行すると、次のような結果が得られます。
ls -ld
drwxr-xr-x 12 root root 4096 Nov 11 14:42 .
フォルダサブディレクトリ内のネストされたファイルまたはサブディレクトリは考慮されません。デフォルトでは、上記のコマンドは私のフォルダに10のディレクトリがあることを意味します。
PS:出力から何かを解析するのは一般的にls
信頼できないので、悪い考えです。使用する機会がある場合は、find
代わりにwithを使用してください。-maxdepth
答え2
を使用できる場合は、組み込み機能も使用できると想定してくださいls
。bash
bash
現在のディレクトリ内のすべてのエントリ数を計算するには、pureを使用します。
$ num_entries () ( # Define a function to:
> shopt -s nullglob # expand * to empty string if no files
> shopt -s dotglob # include .files in * expansion
> a=( * ) # create array containing all entries in current directory
> echo ${#a[@]} # display length of array (number of directory entries)
> )
$ num_entries # call function for current directory
467
$
bash
現在のディレクトリのすべてのサブディレクトリを計算するには、pureを使用します。
$ num_dirs () (
> shopt -s nullglob
> shopt -s dotglob
> a=( */ ) # note the */ glob which selects only directories
> echo ${#a[@]}
> )
設定はその関数内でのみ適用され、他の副作用がないように( )
関数の本文に入れました。shopt
答え3
単純なケースでは、次のように動作します。
ls -A1 | wc -l
答え4
いくつかの方法を組み合わせることができます
ディレクトリ内のファイル数
ls -l | grep "^-" | wc -l
サブディレクトリのナビゲーション
find ./subdirectory -type d
命令を出す
find ./subdirectory -type d | xargs -I{} sh -c "ls -l {} | grep -c '^-'"
ディレクトリに保存されているファイルの数は繰り返し計算されます。
もちろん、印刷物を装飾または豊かにする方法はいくつかあります。