に格納されているどのように多くの私はあなたがvariable..for例に格納されているどのように多くの変数を見つけるだろうか知りたいのですが:チェック変数は、変数
dir=$(ls)
dirがすべてのファイルの名前を格納しますあなたはwhile-doループでそれらを循環させることができます。変数(dir)にいくつの変数(この場合ファイル名)が格納されているか知る方法はありますか?
おかげ
に格納されているどのように多くの私はあなたがvariable..for例に格納されているどのように多くの変数を見つけるだろうか知りたいのですが:チェック変数は、変数
dir=$(ls)
dirがすべてのファイルの名前を格納しますあなたはwhile-doループでそれらを循環させることができます。変数(dir)にいくつの変数(この場合ファイル名)が格納されているか知る方法はありますか?
おかげ
きれいな方法は、bash配列を使用することです。
dir=($(ls))
EDIT:追加のかっこ上記
dir=(*)
注意:上記まだbashの配列を作成し、正しい方法、のためにグレンの回答を参照してください、適切にスペースを処理できません。すなわち、私はdirが単一の変数ではなく配列であると宣言しました。
その後、あなたは、単にディレクトリ内の要素の数(配列)を取得することができます:
echo ${#dir[@]}
あなたは個々の要素にアクセスすることができます:ここ
echo ${dir[0]}
echo ${dir[5]}
arjunありがとう...これは私が全部探していたものでした – czchlong
@czchlong - 素晴らしい!私は新しい何かを学ぶ。 – ArjunShankar
「[@]」とその説明について教えてください。 – czchlong
ls | wc -l
または
echo "$dir" | wc -l
はあなたに近似を与えます。 (ファイル名は、改行が含まれているとき、それはうまく動作しません。)
ディレクトリ内のファイルの数を調べるために信頼性の高い方法が
find . -maxdepth 1 -print0 | tr '\n\0' '_\n' | wc -l
ですが、それはls
にはない隠しファイルを、含みデフォルトではリストです。
をbashを使用すると、ディレクトリの内容を配列に集める信頼性の高い方法です
dir=(*)
これは、スペースで正しく要素を処理します。
+1これは、与えられた理由のための最良の答えです。 – SiegeX
+1の配列を最初に形成する方法を修正します。 – ArjunShankar
Bash変数は、文字列または文字列の配列です。それ以外は何もありません。 言葉は、文字列変数に格納されているどのように多く確認するには:
$ echo "foo bar baz" | wc -w
3
カレントディレクトリに存在するファイルの数を把握するために、@glennは正しい考えを持っています。 任意find
コマンドに一致存在するどのように多くのファイルを見つけ出すために、ちょうどこの使用:
$ find [your options] -printf x | wc -c
を私は技術的に一つだけの変数( 'dir')があると思うし、それだけで長い文字列です。エントリがスペースで区切られている場合(フィールドにスペースを入れることはできません)、スペースで区切られた文字列が変数にいくつあるかを尋ねている場合は、その方法でその方法を再設定する必要があります。 :) –
名前のスペースが正しく書かれたファイルを正しく処理しないため、受け入れられる答え候補として '($(ls))'を使用しないでください。つまり、配列数は実際のファイル数よりも大きくなります。代わりに '$(*)'を使って[Glennの答え](http://stackoverflow.com/a/8750198/207248)を受け入れるべきです。これは、スペースを正しく含むファイルを処理するだけでなく、 'ls'を呼び出すための外部プロセスです。 – SiegeX
@SiegeX - 受け入れられた人が元の質問に答えているので(そのカウント方法)、その欠陥を編集するのは公正でしょうか?私は今そうしています。だからコメント+1。 – ArjunShankar