Com o stat do OSX:
for file in *; do
dir="$(stat -t %Y%m%d%H%M%S -f %Sm -- "$file")"
mkdir -p "$dir"
mv -- "$file" "$dir/$file"
done
Com o GNU stat (ou seja, no Linux ou Cygwin):
for file in *; do
dir="$(stat -c %Y -- "$file")"
mkdir -p "$dir"
mv -- "$file" "$dir/$file"
done
Isso moverá cada arquivo para um diretório chamado com seu mtime (como uma época).
Se você quiser um controle mais refinado sobre a aparência do diretório, pode usar a data do GNU para reformatá-lo, alterando a linha de atribuição para algo assim:
dir="$(date -d @"$(stat -c %Y -- "$file")" +%F)"
Consulte man date
para obter informações sobre especificações de formato de data que você pode usar. Nesse caso, %F
é:
%F full date; same as %Y-%m-%d