web-dev-qa-db-ja.com

パターンに一致するディレクトリで拡張子.csvのファイルを検索します

多くのサブフォルダーがあるフォルダーがあります。

ルートフォルダー名はallCSVで、サブフォルダー名はa_date(s), b_date(s), c_date(s) ...のようになります。

A_date(s)にあり、.csvで終わるファイルが必要です。

私が試した:

find ../ -name '[a_]*' -a -name '*[.csv]'

しかし、.csvで終わるすべてのファイルが表示されています

2
VP7

パターン[a_]*は、文字aまたは_のいずれかで始まる名前と一致します。パターン*[.csv]は、.cs、またはvのいずれかの文字で終わる名前に一致します。 a_で始まる名前を照合するには、-name 'a_*'を使用します。 .csvで終わる名前を照合するには、-name '*.csv'を使用します。

find ../ -name 'a_*' -a -name '*.csv'または同等のfind ../ -name 'a_*.csv'は、名前がa_で始まり、.csvで終わるファイルに一致します。これは、ファイルに到達するためにトラバースされたディレクトリをフィルタリングしません。

ファイルが親ディレクトリのサブディレクトリにある場合(../a_foo/wibble.csvなど)、findは必要ありません。findコマンドは、ディレクトリツリーを再帰的に検索する場合にのみ役立ちます。 echoまたはlsを使用できます。

ls ../a_*/*.csv

ファイルがa_*ディレクトリの下のサブディレクトリにある可能性がある場合(たとえば、../a_foo/wibble.csvまたは../a_foo/bar/wibble.csvであるが../qux/a_foo/wibble.csvではない)、findを呼び出して検索するように指示しますa_*ディレクトリ。

find ../a_* -name '*.csv'

または、findを使用する代わりに、 ** ワイルドカードを使用してサブディレクトリを再帰的に検索することもできます。 ksh93では、最初にset -o globstarを使用してこのパターンを有効にする必要があります。 bashでは、最初にshopt -s globstarでこのパターンを有効にする必要があります。 zshでは、このパターンはデフォルトで有効になっています。プレーンshなどの他のシェルには**がありません。

ls ../a_*/**/*.csv

a_*ディレクトリ自体が親ディレクトリの下の任意の深さにある可能性がある場合は、find -pathまたは**のいずれかを使用できます。

find .. -path '*/a_*/*.csv'
ls ../**/a_*/**/*.csv

これを行うには多くの方法があります。ファイルを一覧表示するだけの場合は、lsを使用できます。

ls a_date\(s\)/*csv

または、findを使用:

find .. -path '*a_date*/*csv' 
find ../allCSVs/a_date\(s\)/ -name '*csv'
1
terdon

Recoll を使用すると、任意のドキュメントタイプを検索したり、以下に示すように検索を特定のフォルダーに制限したりできます。

簡易検索 Simple Search

高度な検索(検索を特定のフォルダに制限するには) Restricting Search

0
justin