शेल स्क्रिप्ट कल की तारीख के लिए


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

किसी भी विचार क्यों यह काम नहीं कर रहा है?

जवाबों:


31

इस तरह दिनांक का उपयोग करने का प्रयास करें:

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

जैसा कि उल्लेख yesterdayGNU दिनांक का हिस्सा है, लेकिन -1d की ऑफ़सेट का उपयोग OS X उपयोग के लिए बराबर होना चाहिए।


3

ओएस एक्स के साथ बंडल की गई तारीख की उपयोगिता जीएनयू तिथि नहीं है (जो --dateविकल्प को स्वीकार करती है)।

आप इसे स्थापित करने के लिए होमब्रे का उपयोग कर सकते हैं ।

आप संभवतः पर्ल का उपयोग कर सकते हैं जो आप चाहते हैं:

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)'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.