Недостающий аргумент - должностное лицо

Это - команда, которую я ввожу.

find /home/things/backups -mtime +0 -exec echo "{}" >> /home/things/logs/backup.log \; -exec echo "Hourly rotate successful: $(date). {} was deleted." >> /home/things/logs/backup.log; \;

и вывод ниже.

find: missing argument to `-exec'

;: command not found

Это создает файл прекрасный backup.log, но файл пуст.

1
задан 1 July 2015 в 22:20

2 ответа

Используя:

find /home/things/backups -mtime +0 -exec \
    sh -c 'echo "$0" >> /home/things/logs/backup.log; echo "Hourly rotate successful: $(date). $0 was deleted." >> /home/things/logs/backup.log;' {} \;

Мы запускаем новую оболочку sh с командой -c и параметр {} ( find результат). В команде мы используем этот параметр через $0.

0
ответ дан 7 December 2019 в 16:14

Давайте изменим местоположение перенаправлений немного и добавим некоторые разрывы строки для наблюдения то, что Вы на самом деле выполняете:

 >> /home/things/logs/backup.log \
   >> /home/things/logs/backup.log \
   find /home/things/backups -mtime +0 -exec echo "{}" \; \
     -exec echo "Hourly rotate successful: $(date). {} was deleted.";
   \;
  • Вы перенаправляете findвывод, не вывод команд, выполненных -exec. Это влияло бы на команды, выполненные с помощью -exec так как они - дочерние процессы и наследовали открытые дескрипторы файлов, таким образом, эффект был бы тем, в чем Вы нуждались, даже если путь, которым Вы пошли об этом, был странным.

  • Затем ; в конце второго exec не был оставлен. find команда была завершена там без a ; для exec, порождение ошибки. find выход сразу из-за этого, таким образом, никакой вывод не был произведен.

  • \; в конце затем обрабатывается оболочкой. Обычно, это был бы разделитель оператора, но так как этого оставляют, это пытается выполнить его как команду. Это перестало работать, естественно.

Рассмотрите упрощение команды:

find /home/things/backups -mtime +0 -exec \
  bash -c 'printf "%s\nHourly rotate successful: $(date). %s was deleted.\n" "$0" "$0"' {} \; \
  >> /home/things/logs/backup.log
1
ответ дан 7 December 2019 в 16:14

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

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