Если вы хотите сделать строку форматирования даты переменной (чтобы избежать дублирования всей строки), НЕ экранируйте %
и НЕ поместите его в $ ()
Например, при объявлении строки просто напишите:
DATEVAR=date +%Y%m%d_%H%M%S
Затем напишите оператор cron с $ ($ VARIABLE_NAME)
следующим образом:
* * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log
Спасибо на cyberx86 , ее / его ответ на ServerFault может быть более завершенным:
Это похоже на хорошее применение для встроенного -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 -, но если ваши имена файлов могут содержать запятые, вы должны указать имя файла в кавычках. То же самое, если вы преобразуете размеры файлов из простой байтовой строки в одну с запятыми в тысячах мест.
Текст в ваших подстановках оценивается один раз перед запуском find. Обратите внимание, что сейчас предпочтительным способом является $( )
. Вы можете передать указанные команды в оболочку, но проще всего просто создать сценарий и вызвать его из find
.