
不適切な行動を見ている人が私だけではないことを願っています。 1時間前に私に尋ねたら私は99%確信したはずだ。
test/src/**/*.js
srcのすべての.jsファイルとsrcのすべてのサブディレクトリと一致します。しかし、私はMacOSを使用しており、Bash 3.2.57を使用しており、複数のファイルと一致しません。
何が間違っているのかを知っている人はいますか?
答え1
Bash 3.2はglobstarをサポートしていません:
$ shopt -s globstar
bash: shopt: globstar: invalid shell option name
いいえshopt -s globstar
、**
一般的な非再帰的なグローブです。
飼育剤情報ページの内容は次のとおりです。
これはbash-3.2のリリース以降にbash-4.0に追加された新機能の簡単な説明です。いつものように、マニュアルページ(doc/bash.1)は完全な説明を見つけることができる場所です。
バッシュの新機能
[...]
w。新しいシェルオプションがあります
globstar
。有効にすると、ワイルドカードコードは**
特に処理されます。つまり、すべてのディレクトリ(該当する場合はその中のファイルも含む)を繰り返し一致させます。
bashを少なくとも4.0に更新するか(おそらくhomebrewからインストール)find
。
答え2
代わりにこれを使用できますfind
。たとえば、
find ./test/src -type f -name \*.js
ディレクトリの深さを2つに制限するには、次の手順を実行します。
find ./test/src -maxdepth 2 -type f -name \*.js