【bash】** というワイルドカードを使用して、指定ディレクトリ以下のサブディレクトリ、ファイル全てにマッチするようにするコマンド

スポンサードリンク

環境

  • Windows 7 Professional 32 bit
  • GitBash

悩み。grep で ** を使ってサブディレクトリを再帰的にマッチできない><

$ grep -rn "command" ./**/*.yml
grep: ./**/*.yml: No such file or directory

解決。** でサブディレクトリを再帰的にマッチする設定

# 一時的に ** (サブディレクトリ、ファイルを再帰的にマッチ) を有効化
shopt -s globstar

# 現在の shopt 設定の一覧を出力
shopt

なお、logout すれば、shopt の変更はリセットされました。

補足

Mac では shopt コマンドは存在するものの、globstar 設定が存在せず、使用できませんでした><。

bash のバージョンが 3.2 と低いからですの><。

なお、バージョンは macOS 10.12.4 (16E195) でございます。

$ echo $BASH_VERSION
3.2.57(1)-release
$
$ shopt -s globstar
-bash: shopt: globstar: invalid shell option name
$
$ shopt
cdable_vars    	off
cdspell        	off
checkhash      	off
checkwinsize   	on
cmdhist        	on
compat31       	off
dotglob        	off
execfail       	off
expand_aliases 	on
extdebug       	off
extglob        	off
extquote       	on
failglob       	off
force_fignore  	on
gnu_errfmt     	off
histappend     	off
histreedit     	off
histverify     	off
hostcomplete   	on
huponexit      	off
interactive_comments	on
lithist        	off
login_shell    	on
mailwarn       	off
no_empty_cmd_completion	off
nocaseglob     	off
nocasematch    	off
nullglob       	off
progcomp       	on
promptvars     	on
restricted_shell	off
shift_verbose  	off
sourcepath     	on
xpg_echo       	off
$

おわりに

次のページが参考になりました。ありがとう存じます!

以上です。


スポンサードリンク

コメントを残す