2017-12-07 4 views
2

Ich habe einen Ordner, der Unterordner enthält und einige Ordner enthält .sh-Datei. Ich möchte meine .sh-Datei in diesem Pfad ausführen, wo ich eine .sh-Datei sehe. Ich versuchterekursiv ".sh" -Datei finden und dann meine .sh-Datei auf diesem Pfad ausführen

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

Diese Suchfunktion funktioniert ordnungsgemäß. Jetzt habe ich eine andere .sh-Datei, die ich auf .sh Dateipfad ausführen möchte. Ich versuchte

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

wo followup.sh ist meine Datei. Der Befehl wird im aktuellen Verzeichnis ausgeführt. aber es wird nicht auf run.sh Dateipfad ausgeführt.

Ich bin neu im Bash-Scripting. Welchen Befehl oder welche Befehle würde ich ausgeben? Beachten Sie, dass Leerzeichen in Ordnername vorhanden sind.

+0

Im Grunde haben Sie die '-exec' verpasst: Es sollte' finden. -name '* .sh' -exec /home/cool/Desktop/followup.sh {} \; ' – hek2mgl

+2

Wenn Sie das Skript innerhalb des Pfades dieser Datei ausführen möchten, verwenden Sie' -execdir' anstelle von ' -exec': 'finden. -name '* .sh' -execdir /home/cool/Desktop/followup.sh {} \; ' – hek2mgl

+0

@ hek2mgl Danke. execdir hat funktioniert. – user8109

Antwort

1
find <parent-directory where all sub-folders with run.sh are located> -name '*.sh' -execdir /home/cool/Desktop/followup.sh {} \; 
Verwandte Themen