Tarih biçimimle ilgili bir sorunum var. Bir biçimden diğerine değiştirmek istiyorum, ya da tam tersi. Tarih formatlarım
Biçim 1
YYYY-MM-DD
Biçim 2
MM/DD/YYYY
Biçim 1'i biçim 2'ye ve biçim 2'yi biçim 1'e değiştirmek istiyorum.
Tarih biçimimle ilgili bir sorunum var. Bir biçimden diğerine değiştirmek istiyorum, ya da tam tersi. Tarih formatlarım
Biçim 1
YYYY-MM-DD
Biçim 2
MM/DD/YYYY
Biçim 1'i biçim 2'ye ve biçim 2'yi biçim 1'e değiştirmek istiyorum.
Yanıtlar:
Bunun için GNU 'tarihi' kullanın. Ayrıca, sizin için diğer biçimler arasında da dönüşür date --help
(biçimlerin listesine bakın ).
$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05
Metin biçiminde dönüştürülmesi gereken tarihleriniz olduğunu varsayarsak
echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'
Ve tam tersi
echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'
date
yaklaşımı ile denemelisiniz , bu kesinlikle daha zarif
$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY
Bu tarihlerin çoğuna sahip bir dosyanız varsa, her satıra bir tane gelecek şekilde:
awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file
Sed'i aşağıdaki gibi kullanarak:
$ echo '2013-12-13' | sed -r 's/([[:digit:]]{2,4})-([[:digit:]]{1,2})-([[:digit:]]{1,2})/\2\/\3\/\1/g'
12/13/2013
$ echo '12/13/2013' | sed -r 's/([[:digit:]]{1,2})\/([[:digit:]]{1,2})\/([[:digit:]]{2,4})/\3-\1-\2/g'
2013-12-13
Bir dosya adındaki tarih biçiminin nasıl değiştirileceği hakkındaki yorumlarda netleştirilmiş soruyu cevaplarken, drewbenn'in gnu date
yaklaşımının bir varyantını kullanın . Bu komut, yerel klasördeki tüm dosyaları bulur xargs
ve date
değiştirilen dosya mv
adını yeniden adlandırma işlemini gerçekleştiren ikinci bağımsız değişken olarak değiştirerek yalnızca dosya adını kullanır .
Komutu değerlendirirken bash
değişken ikamenin ek, hafifçe dolaşımda kullanılması gerekir .bash
date
find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1 $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;