• 締切済み

全てのjpgファイルを一つ上の階層に移動したいです

ネットワークカメラの設定で年月日時分秒を利用してjpgファイルが 以下の様にUPされます。 ./www/hoge/20160309/19/194512_1.jpg ./www/hoge/20160309/19/194512_2.jpg ./www/hoge/20160309/20/203317_1.jpg ./www/hoge/20160309/21/214055_1.jpg ./www/hoge/20160310/07/070503_1.jpg ./www/hoge/20160310/07/082235_1.jpg 時間だけを表している2桁数字のフォルダが邪魔なので、jpgファイル 全てを一括で一階層上の年月日8桁の数字フォルダ内に移動するには、 どのように記述すれば良いかご教示お願いします。 ネットワークカメラは24時間作動しているので、手動で移動するのは 面倒です。どうぞ宜しくお願いします。

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

使用している OS が Linux などの Unix 系であれば、find でファイルを検索するのが簡単かと思います。 use File::Copy; my @file = `find . -name "*.jpg"`; chomp @file; foreach my $file (@file) { my $path = $file; next unless $path =~ s#/\d\d/[^/]+$#/#; move $file, $path or die "move failed: $!"; }