ディレクトリ構成を保ったままn日以前のファイルを移動する

移動先のディレクトリ作成

find /from -type f -mtime +31 | xargs -I {} dirname {} | sort | uniq | sed 's!/from!/to!g' | xargs mkdir -pv

ファイルを移動

find /from -type f -mtime +31 | sed 's!\(/from\)\(.*\)!\1\2 /to\2!g' | xargs --max-args=2 mv -v

rsyncとか使ってコピーした後に削除とかやりたかったけど、n日以前のファイルコピー方法が分からなかった。

xargsが引数を複数取ることが出来るのを初めて知った。便利。