Как использовать опцию -exec в команде find

Я хочу решить некоторые проблемы в compiz с моими мозгами и руками .

Кстати, я ввел следующую команду для сборки compiz из исходного кода в Ubuntu 12.04

find /opt/compiz-built/share/gconf/schemas -exec gconftool-2 --install-schema-file={};

Я ссылался на эту команду на http://www.brazzi64.net/blog/building -compiz-from-source-in-ubuntu-12-04 /

И показывается следующее сообщение.

Как использовать опцию -exec в команде find, полагаю, это моя ошибка.

3
задан 18 June 2014 в 17:10

2 ответа

Вы почти там. Вам нужно \; на конце для разрешения, находят, знают, где конец команды.

find /opt/compiz-built/share/gconf/schemas -exec gconftool-2 --install-schema-file={} \;

Для команд, которые могут взять несколько аргументов за один раз (например, если Вы хотели всего stat каждое имя файла) можно использовать \+ вместо этого. Это создаст составной аргумент, который может выполнить более быстрое, потому что он не раскошеливается на каждый файл:

find . -exec stat {} \+

, Который не будет работать здесь на Ваш пример все же.

<час>

Просто тестовая обвязка для выделения, который заключает в кавычки, не требуется:

$ mkdir 1 2 1\ 2               # makes three directories
$ touch {1,2}/single           # puts a file in each of the two singles
$ touch 1\ 2/COMBO             # puts a file in the dir with a space
$ find -type d -exec ls {} \;
1  1 2  2
single
single
COMBO

, Если бы это не обрабатывало заключение в кавычки на нас, мы видели бы это вместо КОМБИНАЦИИ:

1:
correct

2:
correct
6
ответ дан 18 June 2014 в 17:10

Можно использовать эту команду.

find /opt/compiz-built/share/gconf/schemas -exec gconftool-2 --install-schema-file '{}' ';'

Согласно справочнику по командам находки ($man находят). существуют действия, может предопределенный в команде находки те, которые удаляют, ls.

В дополнение к предопределенным действиям, мы можем также вызвать произвольные команды. Традиционный способ сделать это с - должностное лицо действие. Это действие работает как это:

-exec command {} ;

то, где команда является названием команды, {}, является символьным представлением текущего пути, и точка с запятой является необходимым разделителем, указывающим на конец команды.

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

0
ответ дан 18 June 2014 в 17:10

Другие вопросы по тегам:

Похожие вопросы: