これは私のディレクトリツリーです(すべてのディレクトリとファイルは表示されず、必要なディレクトリとファイルのみが表示されます)。
a_root_dir/ (directory)
a_root_dir/dynamo/local/run.sh
a_root_dir/dynamo/local/run_local.sh
今私がするとき
> cd a_root_dir
> find . -name *.sh
./dynamo/local/run.sh
########### IT DOESN'T SHOW run_local.sh !!!!
> cd dynamo
> pwd
...../a_root_dir/dynamo
> find . -name *.sh
./local/run.sh
./local/run_local.sh
######## NOW IT FOUND IT
どうすればこれが起こりますか?
ファイル、ディレクトリ、スクリプトは「通常」です。シンボリックリンクなし。非常にありがとう
答え1
find
問題は、アスタリスクが引数として渡される前にシェルによって解釈されることです。
script.sh
つまり、findを実行した現在の作業ディレクトリに同様のファイルがある場合、コマンドは次のようになりますlike
。
#command you type:
find . -name *.sh
#command the shell creates:
find . -name script.sh
したがって、あなたの場合、これはシェルで解釈された最初の一致であり、コマンドは文字通り次のようになります*.sh
。a_root_dir
find . -name run.sh
あなたがしなければならないことは、find
実行する前にシェルがアスタリスクを拡張しないように二重引用符を使用することです。
find . -name '*.sh'