gpt4 book ai didi

linux - perl 解压文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:23 25 4
gpt4 key购买 nike

我希望 perl 从我指定的文件夹中解压缩文件,然后删除稀有文件,这样它们就不会占用硬盘空间。文件可以是这种格式:(r(ar|[0-9][0-9])|sfv)

我已经安装了 unrar 并且我是 PERL 的新手所以如果我需要在某处添加一些东西请具体说明。就像将它添加到文件顶部和那里。

我现在的脚本是这样的:

while (1)
{
foreach (`find ${upload_folder}`)
{
chomp;
if ($_ =~ /\.rar$/i)
{
$_=~/^([\W\w]+?)\/([^\/]+)$/;
`rar x "$_" "$1"`;
unlink($_);
}
#...
}
#...
}

谢谢

//哦,是的,有时会有一个包含 rar 文件多个部分的文件夹,名为 .r01、.r02 .. .r50,所有这些部分实际上是 1 个大的 rar 文件,分成许多部分

最佳答案

我不确定你的问题是什么。

但是,如果您的目标是真正学习 Perl(而不是做一个快速的'n'dirty hack 来执行特定功能,一旦您添加一些逻辑来执行多个文件的 rar,您的代码就足够了 - 抱歉, 我不会费心从头开始为你写一个,除非你展示你已经尝试过的东西),有几种方法可以改进你的代码:

  • 首先,它是“Perl”(语言)和 perl 解释器。与您的代码完全无关,但第一条评论按时间顺序排列:)

  • 此外,据我所知,.sfv 文件通常不是 rar 文件。它们包含 checksums ,不是压缩数据。

  • 您的所有代码都应以:

    use strict;
    use warnings;

    这让 Perl 告诉您您可能正在编写的不安全/危险/不好的东西。

  • 当没有等效的内部 Perl 命令时,您通常应该只使用 ``(系统调用)。在这种情况下:

    • find - 使用 Perl 原生 File::Find 模块

    • rar 命令 - 虽然可能有 Perl 原生 rar 模块(搜索 CPAN 以找出),但这是调用外部命令可能没问题的罕见情况之一。

      但是,您应该始终指定系统命令的完整路径(出于安全考虑)

  • unlink() - 与任何其他 IO/文件系统调用一样 - 之后应进行错误检查:

     unlink($file) or die "Could not delete file $file: $!\n";

关于linux - perl 解压文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com