20180122A0223AAA001.csv
20180122T0223AAA002.csv
20180122P0322AAA001.csv
20180122A0222DDD001.csv
20180122A0123CCC001.csv
上のようなファイルが複数存在する場合、ファイル名にAAAの記載があるファイルを検索。
そのファイルの10桁目からファイル名に記載されている日付のフォルダを作成。
そのフォルダ配下にAAAの記載があるファイルのみコピーを行う。
今回の場合は、AAAがファイル名に含まれるファイルの”ファイル名から”「0223」「0322」のフォルダを作成後、そのフォルダ配下に「20180122A0223AAA001.csv」「20180122T0223AAA002.csv」の二つのファイルを「0223」フォルダにコピー。「20180122P0322AAA001.csv」は「0322」フォルダにコピーを行う一連の処理をperlで書きたいと思います。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
OSが不明なのでwindows前提です。
以下のようにしてください。
------------------------
use strict;
my $datadir = "d:\\goo\\perl\\goo3";
chdir($datadir) or die("chdir error:$!");
opendir(DIRH, ".") or die("opendir error:$!");
my @files = readdir(DIRH);
closedir(DIRH);
@files = grep(/^\d{8}\w\d{4}AAA\d{3}\.csv$/i,@files);
my $ctr = 0;
foreach my $fname (@files){
my $sdir = substr($fname,9,4);
-d $sdir or mkdir($sdir,0777) or die("mkdir error:$!");
my $newname = $sdir . "\\" . $fname;
rename($fname,$newname) or die("rename error:$!");
$ctr++;
}
printf("%d files moved!!\n",$ctr);
-------------------------------------
my $datadirはこれらのファイルを格納しているフォルダです。あなたの環境にあわせて適切に設定して下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) Excel VBAでフォルダが何層にもなっていて最下層の中にCSVファイルがあり最上層のファイルを指 4 2022/06/08 20:41
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) 1つのファイルを複数のフォルダにファイル名を【明日の日付】にして、コピーしたい 5 2022/12/13 20:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- グループウェア 一太郎がイントラで開けません。対処方法を知りたいです。 3 2023/04/04 13:30
- Excel(エクセル) 1つのファイルを複数のフォルダにファイル名を【明日の日付】にして、コピーしたい 5 2022/12/13 04:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部サーバーにあるファイルを...
-
VBAでCSVファイルの特定行を書...
-
MATLAB グローバル変数の宣言
-
openした後、closeしないでプロ...
-
ADOによるCSVファイルからのデ...
-
VBAでCSVファイルを途中行まで...
-
ExcelをCSV書き出す場合のシー...
-
perlであるcsvファイルのキーワ...
-
VBAで巨大なファイルの途中から...
-
fopenでディレクトリ内の全ファ...
-
バッチファイルの作り方(CSV→...
-
vba dir の相対パス
-
DOSコマンドで、標準出力を出力...
-
batファイルでrenameができませ...
-
VBAコードを張り付け後のエクセ...
-
CGIから外部コマンド実行時の標...
-
log2の「正確な」計算方法
-
複数ファイルを1つにするシェ...
-
shellのコマンド deffの差分の...
-
ListBoxのデータを高速でファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
openした後、closeしないでプロ...
-
エクセルVBA コードが同じでも...
-
ReadLineでの読み出し行を指定する
-
JavaでCSVファイルを高速に読む...
-
perlで、後ろの行を読んで、前...
-
Perlの変数に文字数制限(容量...
-
エクセルVBAでCSVファイ...
-
perlにて2つのファイル比較
-
MATLAB グローバル変数の宣言
-
C#でCSVファイルを逐一更新したい
-
CSVが可変長の場合の検索方法
-
他のサーバーにあるファイルの...
-
動画像から静止画を取り出すには
-
perlで容量の大きいCSVファイル...
-
外部サーバーにあるファイルを...
-
1ファイルずつ読み込みたい
おすすめ情報
書きたいと思っていますが書けていません。努力、才能が足りないと言われればそうかもしれませんが教えてもらえるとありがたいです。教えてください。よろしくお願います。