2017-12-07 33 views
2

私はサブサブフォルダを含むフォルダを持っていて、いくつかのフォルダは.shファイルを含んでいます。 .shファイルが表示されているパスで.shファイルを実行したい。試しました".sh"ファイルを再帰的に検索し、そのパス上で.shファイルを実行します。

find . -name '*.sh' 
./folder 1/folder 2/run.sh 
./folder3/run.sh 
./folder 4/run.sh 
./folder5/run.sh 

この検索機能は正しく機能しています。今私は.shファイルのパス上で実行したい別の.shファイルを持っています。試しました

find . -name '*.sh' /home/cool/Desktop/followup.sh {} ; 

ここで、followup.shは私のファイルです。コマンドは現在のディレクトリで実行されています。 run.shファイルパスでは実行されません。

私はbashスクリプトの初心者です。どのコマンドを発行するのですか?フォルダ名にはスペースがあることに注意してください。

+0

基本的に、あなたは '-exec'を見逃しました:' find 'でなければなりません。 -name '* .sh' -exec /home/cool/Desktop/followup.sh {} \; ' – hek2mgl

+2

さらに、そのファイルのパス内でスクリプトを実行したい場合は、' -execdir'を ' -exec': 'find。 -name '* .sh' -execdir /home/cool/Desktop/followup.sh {} \; ' – hek2mgl

+0

@ hek2mglありがとうございました。 execdirが働いた。 – user8109

答えて

1
find <parent-directory where all sub-folders with run.sh are located> -name '*.sh' -execdir /home/cool/Desktop/followup.sh {} \; 
関連する問題