Member 13633617 Ответов: 2

Что делает эта строка функции скрипта linux?


найти $путь_к_файлу опции-mtime +1 -Название "*журнал".*-старпома изделие RM {} \; -Exec и Эхо {} 'удалено' \;

Что я уже пробовал:

Это хорошо работает, но мне нужно знать, как мы используем эту штуку-exec в этом коде.

2 Ответов

Рейтинг:
7

Jochen Arndt

Видеть find(1) - Man-страница Linux[^] или тип man find в командной строке оболочки.

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


Рейтинг:
16

Thomas Daniels

find(1) - Man-страница Linux[^] объясняет это вам:

Цитата:
-выполнение команда ;
Выполнять команда; true, если возвращается статус 0. Все следующие аргументы в пользу находить принимаются в качестве аргументов к команде до тех пор, пока аргумент
встречается выражение, состоящее из';'. Строка '{}' заменяется текущим именем файла, обрабатываемым везде, где она встречается в аргументах команды,
не только в спорах, где он один, как в некоторых версиях находить. Обе эти конструкции могут нуждаться в экранировании (с помощью '\') или цитировании до
защитите их от расширения оболочкой. См. ПРИМЕРЫ Раздел для примеров использования -выполнение вариант. Указанная команда выполняется один раз
для каждого совпадающего файла. Команда выполняется в стартовом каталоге. Существуют неизбежные проблемы безопасности, связанные с использованием -выполнение действие;
вы должны использовать -execdir вариант вместо этого.
-выполнение команда {} +
Этот вариант развития событий -выполнение действие запускает указанную команду для выбранных файлов, но командная строка строится путем добавления каждого выбранного имени файла
в конце концов, общее количество вызовов команды будет намного меньше, чем количество сопоставленных файлов. Командная строка построена примерно так же
тот размер строит свои командные строки. В команде разрешен только один экземпляр' {}'. Команда выполняется в стартовом каталоге.
-execdir команда ;
-execdir команда {} +
Нравится -выполнение, но указанная команда выполняется из подкаталога, содержащего соответствующий файл, который обычно не является каталогом, в котором вы находитесь.
начатый находить Это гораздо более безопасный метод вызова команд, так как он позволяет избежать условий гонки при разрешении путей к соответствующим файлам. Как
с -выполнение действие, форма"+" -execdir построит командную строку для обработки более одного совпадающего файла, но любой данный вызов
команда будет отображаться только список файлов, существующих в одном подкаталоге. Если вы используете этот параметр, вы должны убедиться, что ваш $ПУТЬ переменная окружения
не ссылается на '.'; в противном случае злоумышленник может выполнять любые команды, которые ему нравятся, оставляя файл с соответствующим именем в каталоге, в котором вы будете работать
-execdir То же самое относится и к наличию записей в $ПУТЬ которые являются пустыми или не являются абсолютными именами каталогов.