ファイルのフルパスを必要とする小さなスクリプトに使用するファイルのリストを含む配列変数を作成しようとしています。周りを見回して、次のことを試しました。
find /path/ -t f | grep randomString
これは必要なファイルのほんの一部だけを返すことがわかったので、以前のwc -l
コマンドをRと一緒に使用してls -R /path/ | grep randomString
別の行数を得ました(100行を超える差があるため、ls - R outからディレクトリを計算しました)。 。find
期待した結果が返されない理由を知りたいです。どんなアイデアがありますか?
答え1
find
ディレクトリツリーのすべてのファイルを一覧表示します。ls -R
実際には、少数のファイルをリストします。省略されます。ファイルをクリック- 必ずls -AR
含める必要があります。
必要なファイルが見つからない場合は、次のようないくつかの可能性があります。
- 出力でこれを逃しました。検索コマンドを使用します(例:lessのキーを
find … | less
使用)。/
の出力はfind
整列されません。 - このファイルは実際にあなたが考えているものとは異なります。大文字と小文字がわからない場合は、大文字と小文字を区別せずに検索してください。
- あなたが探しているファイルは実際にシンボリックリンクです。
find -xtype f
代わりに、find -type f
シンボリックリンクが指すファイルに基づいてシンボリックリンクを分類するために使用します。 - これらのファイルはディレクトリへのシンボリックリンクの下にあります。シンボリックリンクを閲覧するのに便利
find -L
ですが、注意してください。大規模階層の最上位ディレクトリを指すシンボリックリンクがある場合は、多数のファイルを検索できます。
ls -R
存在しないファイルはどんな場合でも見つかりませんfind
。
ls -R
合計出力の行数を簡単に比較することはできませんfind
。
ls -R
ドットファイルを省略find
してください。ls -R
各サブディレクトリ(ルートディレクトリを除く)には、ディレクトリfind -type f
エントリ、前の行とそのディレクトリのリストを区切る空の行、ディレクトリ名の後に続くヘッダ行コロンなど、合計3行があります。
答え2
ls -R を実行すると、ディレクトリ名のリストが出力として表示されます。