ChromeやFirefoxでダウンロードしたファイルを上書き保存

最近のブラウザは親切なようで、同じ名前のファイルがダウンロードフォルダにある場合、勝手に (1) (2) と連番リネームして、不用意なファイル喪失を防いでくれるようです。削除ならともかく、上書きしてしまうと大変なので、有難い仕様です。昨今のPCのストレージ容量は、ブラウザで通常ダウンロードするようなサイズのファイルに対しては、無限に近い容量がありますしね。

しかし、この仕様が不便なことも稀にあります。先日イラッときていたのは、mbed.orgを使っていたとき。このARMマイコン向けWeb開発環境は、生成したファイルをバイナリ (*.bin) として自動的にダウンロードしてくれます。それをマイコンに書けば動作するのですが…



もし hoge(1).bin のように名前が変わってしまうと、書きこみ用のGUIで指定しなおさないといけない。めんどくさくて死ぬ。
当初はブラウザの設定でなんとか抑制できないものかと考えましたが、この場面以外では自動リネームは有効にしておきたい機能です。


滅多に使わないシェルスクリプトを書いて、Cygwin上で動かして解決しています。

# 2012-04-29追記: 書き直した版 → ChromeやFirefoxでダウンロードしたファイルを上書き保存(2) - ctrl-alt-moccos

#!/bin/sh
if [ $# -eq 0 ]
then
	echo "usage: $0 [interval_sec]"
else
	while (true) do
	ls *\(1\)* 2>/dev/null | perl -ne 'chomp(); /(.+)\(1\)(.+)/; system("mv -fv \"$_\" $1$2");'
	sleep $1
	done
fi

とりあえず動いた程度のもので、元々(1)を含むファイル名を誤爆するなど結構適当です。Chrome用にするならば、(1)の前に半角スペースが入るので、それをパターンに含めれば多少誤爆率は下がります。
いくつか思うところはありますが、こんなちょい作業のスクリプトを改良するよりは、ダウンロード用の一時フォルダは綺麗にしとけよ〜と自分に言い聞かせつつ運用により回避です。


# mbedへの書き込みのときも、手動でD&Dするのやめるか…