Что означает {} + в находке - исполнительная команда?

При записи комплексу лайнеров в ударе удобно использовать readline's edit-and-execute-command (связанный с C-xC-e по умолчанию в emacs режиме). Удар C-xC-e открывает текущую командную строку в редакторе по Вашему выбору со всеми ее необычными функциями. После сохранения его удар выполнит содержание как команды оболочки.

С другой стороны, выпустите встроенный удар fc открыть последнюю команду в редакторе.

24
18.07.2016, 16:27
3 ответа

Использование ; (точка с запятой) или + (знак плюса) обязательно для завершения команд оболочки, вызываемых -exec / execdir .

Разница между ; (точка с запятой) или + (знак плюса) заключается в том, как аргументы передаются в команду find -exec / -execdir параметр. Например:

  • с использованием ; выполнит несколько команд (отдельно для каждого аргумента),

    Пример:

     $ find / etc / rc * -exec echo Arg: {} ';' 
    Arg: /etc/rc.common
    Arg: /etc/rc.common~previous
    Arg: /etc/rc.local
    Arg : /etc/rc.netboot
    

    Все следующие аргументы find считаются аргументами команды.

    Строка {} заменяется текущим именем обрабатываемого файла.

  • с использованием + выполнит минимально возможные команды (поскольку аргументы объединяются вместе). Это очень похоже на то, как работает команда xargs , поэтому она будет использовать как можно больше аргументов для каждой команды, чтобы избежать превышения максимального предела аргументов в строке.

    Пример:

     $ find / etc / rc * -exec echo Arg: {} '+' 
    Arg: /etc/rc.common /etc/rc.common~previous / etc / rc .local /etc/rc.netboot
    

    Командная строка создается путем добавления каждого выбранного имени файла в конце.

    В команде разрешен только один экземпляр {} .

См. Также:

29
27.01.2020, 19:40

Учитывая, что команда находит получает ниже трех файлов:

fileA
fileB
fileC

Если вы используете -Exec с плюсом ( + ),

find . -type f -exec chmod 775 {} +  

Это будет:

chmod 775 fileA fileB fileC

Командная строка создана путем добавления каждого соответствующего имени файла в конце, что так же, как Xargs создает свои командные строки. Общее количество вызовов команды ( CHMOD , в данном случае) будет намного меньше, чем количество сопоставленных файлов.

Если вы используете -EXEC с запятой (; ),

find . -type f -exec chmod 775 {} \;

будет:

chmod 775 fileA
chmod 775 fileB
chmod 775 fileC
24
27.01.2020, 19:40

согласно Человек находит :

-EXEC команда {} + Этот вариант действий -Exect выполняет указанную команду в выбранных файлах, но командная строка создана путем добавления каждого выбранного имени файла в конец; Общее количество вызовов команды будет намного меньше, чем количество сопоставленных файлов. Строка командной строки построена так же, как Xargs строит свои командные строки. Только один экземпляр '{}' разрешен в команде. Команда выполняется в исходном каталоге.

5
27.01.2020, 19:40

Теги

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