При записи комплексу лайнеров в ударе удобно использовать readline's edit-and-execute-command
(связанный с C-xC-e
по умолчанию в emacs режиме). Удар C-xC-e
открывает текущую командную строку в редакторе по Вашему выбору со всеми ее необычными функциями. После сохранения его удар выполнит содержание как команды оболочки.
С другой стороны, выпустите встроенный удар fc
открыть последнюю команду в редакторе.
Использование ;
(точка с запятой) или +
(знак плюса) обязательно для завершения команд оболочки, вызываемых -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
Командная строка создается путем добавления каждого выбранного имени файла в конце.
В команде разрешен только один экземпляр
{}
.
См. Также:
Учитывая, что команда находит получает ниже трех файлов:
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
согласно Человек находит
:
-EXEC команда {} + Этот вариант действий -Exect выполняет указанную команду в выбранных файлах, но командная строка создана путем добавления каждого выбранного имени файла в конец; Общее количество вызовов команды будет намного меньше, чем количество сопоставленных файлов. Строка командной строки построена так же, как Xargs строит свои командные строки. Только один экземпляр '{}' разрешен в команде. Команда выполняется в исходном каталоге.