ファイル名に基づいて年/月/日ディレクトリにファイルを移動します。

ファイル名に基づいて年/月/日ディレクトリにファイルを移動します。

YYYY_MM_DD_HH:MM:SS.swf次の形式でフォルダにファイルをダンプしました。/home/user/dump/

/home/user/save/year/month/day/ファイル名に基づいてYYYY_MM_DDこのファイルを新しいディレクトリツリーに移動したいと思います。または、ファイルの変更日より前に内容を変更できる場合でも許可されます。ここでいくつかの他のスクリプトを見つけましたが、ここに私が探している情報はすべて含まれていないようです。

ベストアンサー1

Perlベースrename(時にも呼ばれるprename)を使用している場合は、単一のコマンドでこれを実行できます。

cd /home/user/dump
rename -v 'use File::Path qw(make_path); m!^((....)_(..)_(..)_(.*))!; my $d = "$2/$3/$4"; make_path($d); s!^!$d/!' *

実際、これは本当ですrename。各ファイルに対して、コードは次のように実行されます。

  1. ディレクトリパスの作成を可能にするシステムライブラリが含まれています。
  2. YYYY_MM_DDファイル名の先頭の構造と一致します。
  3. 対応するディレクトリパスの生成YYYY/MM/DD(必要な場合)
  4. YYYY/MM/DD名前を変更せずにファイルをそのディレクトリに移動する(名前を変更)

おすすめ記事