多くのサブフォルダーがあるフォルダーがあります。
ルートフォルダー名はallCSVで、サブフォルダー名はa_date(s), b_date(s), c_date(s) ...
のようになります。
A_date(s)にあり、.csv
で終わるファイルが必要です。
私が試した:
find ../ -name '[a_]*' -a -name '*[.csv]'
しかし、.csv
で終わるすべてのファイルが表示されています
パターン[a_]*
は、文字a
または_
のいずれかで始まる名前と一致します。パターン*[.csv]
は、.
、c
、s
、または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'