Skrypt powłoki na wczorajszą datę

16

Próbuję wykonać następujący skrypt powłoki z aplikacją Leszczyna na dowolnym pliku w folderze. Działa, ale jedyną przyczyną problemu jest data wczorajsza.

#! /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

Wszelkie pomysły, dlaczego to nie działa?

Joe Bobby
źródło

Odpowiedzi:

31

Spróbuj użyć daty takiej jak ta:

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

jak wspomniano, yesterdayjest częścią GNU Date, ale użycie przesunięcia -1d powinno być równoważne z użyciem OS X.

l'L'l
źródło
3

Narzędzie daty dołączone do systemu OS X nie jest datą GNU (która akceptuje tę --dateopcję).

Możesz użyć homebrew, aby go zainstalować.

Prawdopodobnie możesz użyć Perla, aby uzyskać to, czego chcesz:

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)'
Glenn Jackman
źródło