首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件管理问题

文件管理问题
EN

Stack Overflow用户
提问于 2015-06-24 21:48:02
回答 1查看 28关注 0票数 0

我正在编写一个简单的脚本来重命名&将文件移到一个新目录中。我似乎无法让它正常工作,基本上,如果已经创建了文件夹,只有当文件被重命名时,它才会将文件移动到它中,如果文件夹已经被创建,但是文件需要重命名,它就不能工作,它只会重命名文件并给我一个错误,因为它无法移动文件。如果需要创建文件夹并将文件重命名,它将创建该文件夹并重命名文件,但它将无法移动它们。所以我真的有点迷茫了。

http://i.stack.imgur.com/v8smp.jpg

我尝试了很多不同的方法,但结果都不起作用,或者给了我同样的结果--我认为我做错了什么,下面是我的代码:

代码语言:javascript
复制
use strict;
use warnings;
use File::Copy qw(mv);

my ($movie, $season, $cont) = @ARGV;

if (not defined $movie) {
    die "need a name as first argument\n";
}

if (defined $movie and defined $season and defined $cont) {

    print "\n\nProcessing $movie season $season with container .$cont :\n";

    my $npath = "Saison "."$season";
    my $exist = 0;
    my $num = 1;
    my $ind = 0;
    my $flast = undef;
    my $rpath = undef;
    my @files = glob("*.$cont");
    my @all = glob('*');

    foreach my $f (@files) {
        if ($f =~ m/e([0-1_-] ?)\Q$num/i or $f =~ m/episode([0-1_-] ?)\Q$num/i) {
            $flast = "$movie.S$season"."E$num.$cont";
            rename($f, $flast) or die "\nError while renaming $f !";
            $num++;
        }
    }

    if (-d "$npath") {
        $exist = 1;
        print "\n$npath";
        }
    else {
        mkdir($npath) or die "\nError while making new directory";
        $exist = 1;
    }

    sleep(1);

    if ($exist == 1) {
        foreach my $f (@files) {
            $npath = "Saison "."$season/$f";
            mv($f, $npath) or die "\nError while moving $f";
            print "\n$f done !";
            $ind++;
        }
        print "\n\n$ind files processed successfully !";
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 22:46:05

问题是要重命名文件,然后移动它们,但是在重命名文件之后,文件在@files数组中不再以旧名称存在。

您可以使用mv更改文件名,并将其放入新目录。换句话说,您可以调用

代码语言:javascript
复制
mv 'movie.title.s01.e08.(2008).[1080p].mkv', 'Saison 01/Movie TitleS01E08.mkv'

这大大简化了你的程序。如果新目录不存在,只需创建它,然后为mv $f, "$npath/$flast"中的每个名称调用@files

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31037688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档