Xargs rm не работает при запуске его в сценарии как части core_pattern

Если вы хотите сделать строку форматирования даты переменной (чтобы избежать дублирования всей строки), НЕ экранируйте % и НЕ поместите его в $ ()

Например, при объявлении строки просто напишите:

DATEVAR=date +%Y%m%d_%H%M%S

Затем напишите оператор cron с $ ($ VARIABLE_NAME) следующим образом:

* * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log

Спасибо на cyberx86 , ее / его ответ на ServerFault может быть более завершенным:

0
21.09.2018, 21:00
2 ответа

Это похоже на хорошее применение для встроенного -execскрипта:

find. -name \*.png -exec sh -c 'printf '%s,%s\\\\n' "$(identify -format '%hx%w' "$1")" "$(stat -c %y,%s,%n "$1")";' bash {} \; > out.csv

Пример вывода::

32x32,2018-09-21 15:04:33.216773000 -0400,192,./favicon.png
20x20,2018-09-21 15:04:33.225771000 -0400,1202,./delete.png

Разбит для удобочитаемости, этот скрипт:

find. -name \*.png -exec sh -c 
  'printf '%s,%s\\\\n' 
     "$(identify -format '%hx%w' "$1")" 
     "$(stat -c %y,%s,%n "$1")";' 
  bash {} \; > out.csv

Обратите внимание на дополнительные кавычки, чтобы получить один \nв printf.

Вне find, чтобы получить такой вывод для файлов в текущем каталоге:

for f in./*.png
do
  printf '%s,%s\n' "$(identify -format '%hx%w' "$f")" "$(stat -c %y,%s,%n "$f")"
done

Пример вывода::

20x20,2018-09-21 15:04:33.225771000 -0400,1202,./delete.png
32x32,2018-09-21 15:04:33.216773000 -0400,192,./favicon.png

Вы можете заменить части или добавить другие части по мере необходимости; для 3-й команды просто добавьте еще одну %sи команду в кавычках.

Я сгенерировал упрощенный вывод типа CSV -, но если ваши имена файлов могут содержать запятые, вы должны указать имя файла в кавычках. То же самое, если вы преобразуете размеры файлов из простой байтовой строки в одну с запятыми в тысячах мест.

1
28.01.2020, 02:42

Текст в ваших подстановках оценивается один раз перед запуском find. Обратите внимание, что сейчас предпочтительным способом является $( ). Вы можете передать указанные команды в оболочку, но проще всего просто создать сценарий и вызвать его из find.

0
28.01.2020, 02:42

Теги

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