So übergeben Sie gefundene Dateien wiederholt, damit sie per Skript abgerufen werden können

So übergeben Sie gefundene Dateien wiederholt, damit sie per Skript abgerufen werden können

Ich finde Dateien, die nicht mit .done enden, wie folgt:

find -type f -not -name \*.done -execdir myscript {} \;

Nun möchte ich Folgendes tun:

- jede gefundene Datei an myscript übergeben

-sourcen Sie jede Datei in Myscript mit dem Quellbefehl

-run myscript für jede Quelldatei

Hinweis: Ich möchte myscript wiederholt ausführen, einmal für jede gefundene Datei. Ich möchte myscript nicht für mehrere Dateien gleichzeitig ausführen. Im Wesentlichen möchte ich also eine Schleife über die gefundenen Dateien ausführen und sie in myscript als Quelle verwenden. Wie kann ich das erreichen?

Antwort1

Ihr findBefehl wird myscriptfür jede gefundene Datei ausgeführt und übergibt den Namen der Datei als erstes Befehlszeilenargument an myscript.

Sie möchten die Datei in als Quelle verwenden und sollten myscriptdaher myscriptFolgendes in den Code aufnehmen:

. ./"$1"

Anmerkungen:

  • Ich gehe davon aus, myscriptdass es von einer Shell interpretiert wird.
  • Sie haben es erwähnt, es ist sourceaber .portabler.
  • Ich habe verwendet ./"$1", weil Sie verwendet haben -execdir.Es scheintEinige Implementierungen von findschließen nicht ./in den String ein, der {}nach ersetzt wird -execdir. Wenn dies der Fall wäre, danndieses Missgeschickkönnte passieren. Das Hinzufügen eines expliziten Elements ./verhindert dies.

verwandte Informationen