虎(牛)龍未酉2.1

記録帳|+n年後のジブンが思い出せますように……

【記録】ファイルを複製し、日付を変更する(その2)

ファイルの日付を変えたりするのを、グレードアップ?した。

前回やったこと、今回やろうとしたこと

 

前回は、クイックアクションで

経費精算200222.xlsx→経費精算200307.xlsxとなるようにした。

(コピーして、2週間後の日付にする)

 

masatler.hatenablog.com

 

そういえば

  • 他にも同じように2週間毎に作成するものがある
  • でも、ファイル名のつけかたが違う

ことに気がついた。

 

大方針として

  • 日付_ファイル名の順番に統一しよう
  • 日付形式は、yymmdd_に統一しよう

と決めた。

 

クイックアクションとして、

  • 日付が入っているファイルに対し、コピーして日付を2wk後に変える
  • 日付が入っていないファイルとフォルダに対し、今日の日付を付加する

をつくることにした。

 

やったこと(概要)

 

<2週間後の日付に変えるほう>

f:id:masatora_bd5:20200307132049p:plain

たとえば

 200307_経費精算.xlsm→200321_経費精算.xlsm

 200309_ほにゃらら.xlsx→200321_ほにゃらら.xlsx

 

<先頭に日付を付与するほう>

f:id:masatora_bd5:20200307132344p:plain

 

 

スクリプト

コメントにだいたい書いたので、説明は略。 

<2週間後の日付に変えるほう>

 

for f in "$@"
do

#dt1を取得……〜〜/〜〜/yymmdd_xxxx.zzz形式であることが所与の条件
#   basenameを取得(/から前を削除)
	dt1=${f##*/}
#	echo "$dt1"
#   日付を取得(_から先を削除)
	dt1="${dt1%_*}"
#	echo "$dt1"

#dt2をセット(dt1に対して2wk後日付)
	dt2=$(date -v+2w -j -f "%y%m%d" "$dt1" "+%y%m%d")
#	echo "$dt2"

#cp
	cp $f ${f/"$dt1"/"$dt2"}

done

 

<先頭に日付を付与するほう>

for f in "$@"
do

#1. dt1を取得(拡張子をのぞくファイル名)
#   basenameを取得(/から前を削除)
	dt1=${f##*/}
#	echo "$dt1"
#   日付を取得(.から先(拡張子)を削除)
	dt1="${dt1%.*}"
#	echo "$dt1"


#2. dt2をセット(ファイル名の冒頭に今日日付をyymmdddで追加)
	dt2=$(date "+%y%m%d")_"$dt1"
#	echo "$dt2"


#3. mv
	mv $f ${f/"$dt1"/"$dt2"}

done

 

環境

 

MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports)

macOS Catalina 10.15.3

Automator バージョン2.10 (492)