2.2. Команде xargs
2.2. Команде xargs
При наличии опции -exec команда find передает указанной команде все найденные файлы, которые обрабатываются за один раз. К сожалению, в некоторых системах длина командной строки ограниченна, поэтому при обработке большого числа файлов может быть выдано сообщение об ошибке, которое обычно гласит: "Too many arguments" (слишком много аргументов) или "Arguments too long" (слишком большой список аргументов). В этой ситуации на помощь приходит команда xargs. файлы, полученные от команды find, она обрабатывает порциями, а не все сразу.
Рассмотрим пример, в котором команда find возвращает список всех файлов, имеющихся в системе, а команда xargs выполняет для них команду file, проверяющую тип каждого файла:
$ find / -type f -print | xargs file
/etc/protocols: English text /etc/securetty: ASCII text
Ниже приведен пример, демонстрирующий поиск файлов дампа, имена которых команда echo помешает в файл /tmp/core.log.
$ find / -name core -print | xargs echo > /tmp/core.log
В следующем примере в каталоге /apps/audit выполняется поиск всех файлов, к которым другие пользователи имеют полный доступ. Команда chmod удаляет для них разрешение на запись:
$ find /apps/audit -perm -7 -print | xargs chmod o?w
Завершает наш перечень пример, в котором команда grep ищет файлы, содержащие слово "device":
$ find / -type f -print | xargs grep "device"
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Утилита find и xargs при ней
Утилита find и xargs при ней На этих страницах речь пойдет о пакете, известном в проекте GNU как findutils. И в первую голову — о команде find (как, впрочем, и о тесно связанной с ней команде xargs). Столь высокая честь выпадает им потому, что посредством этих двух команд можно выполнить
Пример 12-4. Использование команды xargs для мониторинга системного журнала
Пример 12-4. Использование команды xargs для мониторинга системного журнала #!/bin/bash# Создание временного файла мониторинга в текщем каталоге,# куда переписываются несколько последних строк из /var/log/messages.# Обратите внимание: если сценарий запускается обычным пользователем,# то
Пример 12-5. copydir, копирование файлов из текущего каталога в другое место, с помощью xargs
Пример 12-5. copydir, копирование файлов из текущего каталога в другое место, с помощью xargs #!/bin/bash# Копирует все файлы из текущего каталога# в каталог, указанный в командной строке.if [ -z "$1" ] # Выход, если каталог назначения не задан.then echo "Порядок использования: `basename $0` directory-to-copy-to"
18.3.13. Передача параметров сценария системной команде
18.3.13. Передача параметров сценария системной команде Позиционные параметры можно передать сценарию, а затем проверить значение переменной. Если при этом пользователь указывает после названия сценария наименование каталога, сценарий заново присваивает специальному