Может ли команда "exec" команды find запускать программу в фоновом режиме? - PullRequest
2 голосов
/ 12 мая 2009

Я хотел бы сделать что-то вроде:

find . -iname "*Advanced*Linux*Program*" -exec kpdf {} & \;

возможно? Какой-нибудь другой сопоставимый метод доступен?

Ответы [ 2 ]

13 голосов
/ 12 мая 2009

Во-первых, он не будет работать, как вы набрали, потому что оболочка будет интерпретировать его как

find . -iname "*Advanced*Linux*Program*" -exec kpdf {} &
\;

, который является недопустимым find запуском в фоновом режиме, за которым следует команда, которая не существует.

Даже экранирование не работает, так как find -exec на самом деле exec передает заданный список аргументов вместо передачи его оболочке (что фактически обрабатывает & для создания фона).

Как только вы узнаете, что в этом проблема , все, что вам нужно сделать, - это запустить оболочку, которая выдаст следующие команды:

find . -iname "*Advanced*Linux*Program*" -exec sh -c '"$0" "$@" &' kpdf {} \;

С другой стороны, учитывая то, что вы пытаетесь сделать, я бы предложил один из

find ... -exec kfmclient exec {} \;  # KDE
find ... -exec gnome-open {} \;      # Gnome
find ... -exec xdg-open {} \;        # any modern desktop

, который откроет файл в программе по умолчанию, связанный с вашей рабочей средой.

1 голос
/ 14 мая 2009

Если ваша цель - просто не закрывать один PDF-файл, чтобы увидеть следующий, а не отображать каждый PDF-файл в отдельном экземпляре, вы можете попробовать

find . -iname "*Advanced*Linux*Program*" -exec kpdf {} \+ &

В плюсовом варианте -exec создает командную строку, как xargs, поэтому все найденные файлы будут переданы в один и тот же экземпляр kpdf. В конце концов & & влияет на всю находку. При обнаружении очень большого количества файлов он может по-прежнему открывать их в пакетном режиме, потому что командные строки растут слишком долго, но с точки зрения использования ресурсов в вашей системе это может быть даже хорошо. ;)

kpdf должен иметь возможность взять список файлов в командной строке, чтобы это работало, так как я сам им не пользуюсь, я этого не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...