Как повторно передавать найденные файлы для использования скриптом

Как повторно передавать найденные файлы для использования скриптом

Я нахожу файлы, которые не заканчиваются на .done, вот так:

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

Теперь я хочу сделать следующее:

-передавать каждый найденный файл в myscript

-source каждый файл в myscript с помощью команды source

-запустить myscript для каждого исходного файла

Примечание: я хочу запустить myscript повторно, один раз для каждого найденного файла. Я не хочу запускать myscript для нескольких файлов одновременно. Поэтому по сути я пытаюсь перебрать найденные файлы и получить их в myscript. Как мне это сделать?

решение1

Ваша findкоманда выполняется myscriptдля каждого найденного файла, передавая имя файла в качестве первого аргумента командной строки myscript.

Вы хотите получить файл в исходном формате myscript, поэтому myscriptвключите в его код следующее:

. ./"$1"

Примечания:

  • Я предполагаю, myscriptчто это интерпретируется оболочкой.
  • Вы упомянули source, но .он более портативен.
  • Я использовал, ./"$1"потому что ты использовал -execdir.Кажетсянекоторые реализации findне включают ./в строку, заменяемую {}после -execdir. Если бы это было так, тоэта неудачаможет случиться. Добавление явного ./предотвращает это.

Связанный контент