Есть несколько способов, каждый из которых ориентирован на конкретную потребность. Добро пожаловать в мир UNIX.
Это запускает команды через nohup:
find . -type f -name 'abc' | xargs -I '{}' nohup '{}' -p
Пояснение:
find . посмотрите в текущем каталоге и его подкаталогах.
-type f искать файл.
-name 'abc' имя файла должно быть точно "abc" (с учетом регистра).
| передать полученный список файлов в другую программу.
xargs отправляет отдельные записи в другую программу.
-I '{}' в следующем выражении замените '{}' записью.
nohup это программа, которую xargs будет вызывать несколько раз, каждый раз передавая один из результатов find в качестве параметра. Эта программа используется для запуска заданий, которые будут выполняться в фоновом режиме и не будут прерываться, если текущий сеанс отключается. Чтобы вы могли проверить результаты, вывод команд, выполненных через nohup , по умолчанию добавляется в файл nohup.out в текущем каталоге.
'{}' это заполнитель и будет заменен результатами find .
-p это будет добавлено в качестве дополнительного параметра.
Пример: допустим, у вас есть один файл с именем "abc" в текущей папке, а другой в подпапке с именем "sub"; команды, которые будут выполнены:
nohup ./abc -p
nohup ./sub/abc -p
Примечание: может быть полезно запустить xargs -p как он будет отображать каждую отдельную команду перед ее выполнением. Отвечая y он действительно запустит его, n пропустит его (find . -type f -name 'abc' | xargs -p -I '{}' nohup '{}' -p).
Или используя sudo:
find . -type f -name 'abc' | xargs -I '{}' sudo -u $USER '{}' -p
sudo выполняет команду и позволяет выбрать пользователя для запуска. В этом примере он использует текущего пользователя, имя которого находится в переменной среды $USER .
Или используя bash (или вашу любимую оболочку):
find . -type f -name 'abc' | xargs -p -I '{}' bash -c "'{}' -p"
Здесь команды передаются в bash, но вы можете запускать их с другой оболочкой (если она у вас установлена, конечно). Просто замените bash на ваш выбор sh , csh , tcsh , ksh , zsh ...
Или используя parallel:
find . -type f -name 'abc' | parallel --no-notice -I '{}' "'{}' -p"
parallel обычно не устанавливается по умолчанию, но ее стоит использовать; Думайте об этом как о расширенном xargs (он написан для работы с теми же опциями), который имеет полезную возможность запуска записей, которые он получает, вместо того, чтобы всегда передавать их в другую программу (по крайней мере, я не смог чтобы получить Xargs, чтобы сделать это). Как следует из его названия, команды по умолчанию выполняются параллельно, что максимизирует использование процессора / потока. Опция --no-notice скрывает цитату всегда diplays пока не работают с --bibtex
Или с по at
find . -type f -name 'abc' | xargs -I '{}' echo '{}' -p | at now
at планирует команду, которая будет запущена в указанное время; в этом примере now используется для немедленного запуска команд.