サブフォルダが多いフォルダがあります。
ルートフォルダ名はallCSVで、サブフォルダ名は次のとおりです。a_date(s), b_date(s), c_date(s) ...
私はa_date(s)にあり、.で終わることを望みます.csv
。
私は以前試しました:
find ../ -name '[a_]*' -a -name '*[.csv]'
ただし、次に終わるすべてのファイルが表示されます。.csv
答え1
このパターンは、または文字で始まる名前[a_]*
と一致します。このパターンは、文字の1つで終わる名前と一致します。で始まる名前を一致させるには、を使用します。で終わる名前を一致させるには。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
答え2
これを行う方法はいくつかあります。ファイルを一覧表示するには、次のものを使用できますls
。
ls a_date\(s\)/*csv
または以下を使用してfind
:
find .. -path '*a_date*/*csv'
find ../allCSVs/a_date\(s\)/ -name '*csv'