ITC Advent Calendar(1) 2日目
https://adventar.org/calendars/2563
ブログに書くほどでもないのでGistに書こうと思う
twitterとかpixivとかでかき集めたえろ画像を1個のフォルダに突っ込みまくってたらウン万件くらいいってたので
画像の更新日時を見て月毎(YYMM)にフォルダ分けするスクリプトを書きました。
Xubuntuでしか動作確認してません。
Windowsは?知るか
#!/bin/bash
exts=("jpg" "png" "jpeg" "gif")
for ext in "${exts[@]}";do
find . -maxdepth 1 -name "*.${ext}" | while read file;do
date=$(ls -l --time-style=long-iso "${file}" | sed -e 's/ */ /g' | cut -d " " -f 6 | cut -c 3-7 | sed -e 's/-//g')
if [ ! -e "${date}" ];then
mkdir "${date}"
fi
mv "${file}" "${date}"
done
done
for ext in "${exts[@]}";do
- 配列をforで回す時は@を付けると良いらしい
- *だとダブルクォートで囲んだ時に配列が全部繋がる
- http://www.task-notes.com/entry/20150119/1421646435
find . -maxdepth 1 -name "*.${ext}" | while read file;do
-maxdepth
で階層の最大深度を指定できる- findコマンドの出力は1行毎に${file}に格納されてforeachみたいな感じになる
ls -l --time-style=long-iso "${file}" | sed -e 's/ */ /g' | cut -d " " -f 6 | cut -c 3-7 | sed -e 's/-//g'
--time-style
で更新日時の書式を指定できる -long-iso
だと数字(とハイフン)だけのアレになるsed -e 's/ */ /g' | cut -d " " -f 6 | cut -c 3-7 | sed -e 's/-//g
でめちゃクソ整形しまくったらYYMMの形になる
if [ ! -e "${date}" ];then
mkdir "${date}"
- ${date}ディレクトリが存在しなかった時に${date}ディレクトリを作る
っていう感じで整理しました。
おわり