найти -exec функцию оболочки в Linux? - PullRequest
163 голосов
/ 01 декабря 2010

Есть ли способ заставить find выполнить функцию, которую я определяю в оболочке?Например:

dosomething () {
  echo "doing something with $1"
}
find . -exec dosomething {} \;

Результат этого:

find: dosomething: No such file or directory

Есть ли способ получить find -exec, чтобы увидеть dosomething?

Ответы [ 13 ]

1 голос
/ 01 декабря 2010

Невозможно выполнить функцию таким образом.

Чтобы преодолеть это, вы можете поместить свою функцию в скрипт оболочки и вызывать ее из find

* 1007.*

Теперь используйте его как find:

find . -exec dosomething.sh {} \;
0 голосов
/ 12 апреля 2014

Я бы вообще не использовал -exec. Почему бы не использовать xargs?

find . -name <script/command you're searching for> | xargs bash -c
0 голосов
/ 01 декабря 2010

Не напрямую, нет. Find выполняется в отдельном процессе, а не в вашей оболочке.

Создайте сценарий оболочки, который выполняет ту же работу, что и ваша функция, и найдите, что -exec может.

...