変更された日付で作成され、名前付きフォルダにmvファイルをバッチ処理する方法は?

変更された日付で作成され、名前付きフォルダにmvファイルをバッチ処理する方法は?

私はターミナル関連のコンテンツに初めて触れましたが、上記のトピックに対する回答が見つかりませんでした。

私のOSで端末を使ってこれを行うにはどうすればよいですか?

答え1

そしてperl

perl -MPOSIX -le 'for (<*.jpg>) {
  $d=strftime"%Y-%m-%d",localtime((stat$_)[9]);
  mkdir$d;rename$_,"$d/$_" or warn "rename $_: $!\n"}'

そしてzsh

zmodload zsh/stat
for f (*.jpg) {stat -F %F -A d +mtime -- $f && mkdir -p $d && mv -- $f $d}

答え2

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

GNU statを使用する(例:LinuxやCygwinで):

for file in *; do
    dir="$(stat -c %Y -- "$file")"
    mkdir -p "$dir"
    mv -- "$file" "$dir/$file"
done

これにより、各ファイルがmtime(エポック)に沿って名前付きディレクトリに移動されます。

ディレクトリの外観をより細かく制御するには、GNU日付を使用して割り当て行を次のように変更してフォーマットを再指定できます。

dir="$(date -d @"$(stat -c %Y -- "$file")" +%F)"

man date利用可能な日付形式の仕様については、参考資料を参照してください。この場合は%F次のようになります。

%F 日付全体、%Y-%m-%d と同じ

関連情報