Shell Script для вчерашней даты

16

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

#! /bin/bash

saveDir="TJ"
dd=$(date --date='yesterday' +'%m-%d-%Y')
for file in *.csv ; do
    saveName="${saveDir}/TJ ${dd}.csv"
    cut -d',' -f2,14 "$file" > "$saveName"
done

Есть идеи, почему это не работает?

Джо Бобби
источник

Ответы:

30

Попробуйте использовать дату следующим образом:

dd=$(date -v -1d '+%m-%d-%y')

как уже упоминалось, yesterdayявляется частью GNU Date, но использование смещения -1d должно быть эквивалентно для использования OS X.

l'L'л
источник
3

Утилита date в комплекте с OS X не является GNU date (которая принимает эту --dateопцию).

Вы можете использовать доморощенный, чтобы установить его.

Вы, вероятно, можете использовать Perl, чтобы получить то, что вы хотите:

perl -MPOSIX=strftime -le 'print strftime("%d-%m-%Y",localtime(time()-86400))'
# or
perl -MTime::Piece -MTime::Seconds -le 'print((Time::Piece->new - ONE_DAY)->dmy)'
Гленн Джекман
источник