Script Shell pour la date d'hier

16

J'essaie d'exécuter le shellscript suivant avec l'application Hazel sur n'importe quel fichier du dossier. Cela fonctionne, mais la seule chose qui cause un problème est la date d'hier.

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

Des idées pourquoi cela ne fonctionne pas?

Joe Bobby
la source

Réponses:

30

Essayez d'utiliser une date comme celle-ci:

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

comme mentionné yesterdayfait partie de GNU Date, mais l'utilisation d'un décalage de -1d devrait être équivalente à l'utilisation d'OS X.

je vais
la source
3

L'utilitaire de date fourni avec OS X n'est pas la date GNU (qui accepte l' --dateoption).

Vous pouvez utiliser homebrew pour l'installer.

Vous pouvez probablement utiliser Perl pour obtenir ce que vous voulez:

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
la source