Script Shell untuk Tanggal Kemarin

16

Saya mencoba menjalankan shellscript berikut dengan aplikasi hazel pada file apa pun di folder. Ini bekerja, tetapi satu-satunya hal yang menyebabkan masalah adalah tanggal kemarin.

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

Adakah ide mengapa ini tidak berhasil?

Joe Bobby
sumber

Jawaban:

30

Coba gunakan tanggal seperti ini:

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

sebagaimana disebutkan yesterdayadalah bagian dari Tanggal GNU, tetapi menggunakan offset -1d harus setara untuk penggunaan OS X.

aku akan
sumber
3

Utilitas tanggal yang dibundel dengan OS X bukan tanggal GNU (yang menerima --dateopsi).

Anda dapat menggunakan homebrew untuk menginstalnya.

Anda mungkin dapat menggunakan Perl untuk mendapatkan yang Anda inginkan:

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
sumber