Как выполнить файлы, которые найдены найти
У меня есть несколько исполняемых файлов в дереве каталогов. Я хочу найти их и выполнить их самым простым способом. Я пробовал это до сих пор:find . -perm 0775 -type f | xargs exec
Но exec - это не исполняемый файл, это внутренний bash. Я мог бы создать скрипт-обертку, который мог бы выглядеть так:
#!/bin/bash
# exec.sh
exec $1
И тогда мог бежать find . -perm 0775 -type f -exec ./exec.sh {} \;
Но должен быть более элегантный и короткий способ сделать это.
2 ответа
Решение
Просто бросьте сценарий.
find . -perm 0775 -type f -exec '{}' ';'
работает просто отлично!
xargs
на самом деле не подходит для этого; в основном он предназначен для предоставления фиксированной команды с аргументами, считанными из стандартного ввода.
Но вы можете вызывать программы напрямую, используя простой цикл оболочки:
find . -perm 0775 -type f | while read program; do
$program
done