コードを舐める日々

わからないことがわからないことをしる日々

ファイルを最深階層部まで検索する

Perlの勉強として。

#!/usr/bin/perl

use strict;
use warnings;

use File::Find;
use Data::Dumper;
use Perl6::Say;

# 変数宣言
my (@list, @filedir);
my $filename = "/.wmv";
my $dir = "movie"; # このスクリプトを実行するディレクトリにある指定ディレクトリを入れる

# 複数ディレクトリからファイルを検索する
find(\&wanted, ($dir)); 
sub wanted{
    push(@list, "$File::Find::name");
}
foreach(@list){
    if($_ =~ /$filename/){
        push(@filedir, $_);
    }
}
say Dumper(@filedir);

上記のスクリプトは、実行ディレクトリにある「movie」フォルダから最深階層部まで「*.vmv」ファイルのみ抽出します。

もし、「*.wmv」ファイルを削除したい場合はサブルーチンの中を下記のように変更すればよし。

sub wanted{
    unlink("$_");
}

※注意! 確認なしで、強制削除します。

なにか、いけない動画をいっぱい持っていて瞬時に消さなければならない時に重宝すると思います。

Perl Life enjoy!