如何使用 Perl 将大于 300KB 的文件移动到其他位置

L 的 Toine

我有一个 Perl 脚本 ( move_file.pl) 并且需要添加一个额外的功能。大于 300KB 的文件必须移动到另一个位置,然后脚本应该发送电子邮件警告。

如何读取文件的大小并将“较大的文件”移动到不同的位置?

当前移动脚本:

  opendir(D, "$source_dir") or mail_die ("Fout bij lezen van directory $source_dir : $!" ); 
my @allfiles = sort( grep { -f "$source_dir/$_" } readdir D); #Lees alle bestanden uit de huidige werk directory 
closedir(D);

my @filelist = grep { !/^.+(\._cpcnv_)$/i } @allfiles;  #Alle bestanden die NIET passen in het patroon *._cpcnv_  (Case insensitive) 
foreach my $filename (@filelist) 
{
  my $source_file = "$source_dir/$filename";
  my $target_file = "$target_dir/$filename";  
  rename $source_file , $target_file or mail_die ("Fout bij hernoemen van bestand $source_file naar $target_file : $! \n" );
  print "Bestand $source_file verplaatst naar $target_file.\n";
}
debug "Succesvol beeindigd!\n";
exit;
乔结婚了

这将整理出较大的文件进行一些特殊处理,并在过程中更改目标目录:

#!/usr/bin/env perl

use strict;
use warnings;

my($THRESHOLD) = 300 * 1024;

my($SOURCE_DIR) = "/tmp/src";
my($TARGET_DIR) = "/tmp/dst";
my($LARGE_DIR)  = "/tmp/bigfiles";

foreach my $filename (@ARGV) {
    next if -d $filename;

    my($source_file) = "$SOURCE_DIR/$filename";
    my($target_file) = "$TARGET_DIR/$filename";

    my($size) = (stat($source_file))[7];
    $target_file = mail_warn($source_file, $filename, $size) if ($size > $THRESHOLD);

    print qq{"TARGET_DIR: "$target_file"\n};
}

sub mail_warn
{
    my($source_file, $filename, $size) = @_;
    print qq{File "$source_file" too big! [$size]\n};

    my($new_target) = "$LARGE_DIR/$filename";
    $new_target;
}

一个带有一些虚构数据的小样本:

$ /tmp/foo *
"TARGET_DIR: "/tmp/dst/aaa"
"TARGET_DIR: "/tmp/dst/bbb"
File "/tmp/src/bbb" too big! [3014026]
"TARGET_DIR: "/tmp/bigfiles/bbb"
"TARGET_DIR: "/tmp/dst/ccc"
File "/tmp/src/ddd" too big! [501130]
"TARGET_DIR: "/tmp/bigfiles/ddd"
"TARGET_DIR: "/tmp/dst/eee"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Go将文件移动到其他驱动器

如何将引导程序字体移动到其他文件夹?

如何将地图移动到其他地图

如何将XML注释节点转换并移动到其他位置的元素节点

如何使用Azure数据工厂将场所文件移动到其他目录

如何使用Perl将文件从服务器移动到计算机

如何将Azure VM映像移动到其他位置

如何在Python应用程序中存储和使用300KB查找表?

如何基于WinSCP上载的结果将文件批量移动到其他文件夹

将存储在excel文件中的数据和查询移动到外部源(本地)以供其他excel文件使用

Bash脚本使用awk或sed将文件中的特定行移动到其他行?

使用PHP将整个文件夹的文件移动到其他文件夹的最快方法

如何使用transform属性将元素移动到其他元素下

将打开的文件移动到其他设备

如何在bash中使用其ID将窗口移动到其他工作区?

将照片移动到其他文件夹iOS

如何将Windows文件夹移动到其他驱动器?

将/ tmp文件夹移动到其他位置。/ tmp无法清空的问题

C ++嵌套类-将实现移动到其他文件

我们如何将工作目录移动到其他位置?

使用CSV文件将文件移动到其他目录

如何基于Powershell中的用户输入将文件移动到其他文件夹

使用Ajax PHP不会将文件移动到其他位置

将 x 个文件移动到其他目录

使用python将文件夹从文件夹列表移动到其他文件夹列表

如何将桌子移动到其他桌子里面

无法将文件移动到其他文件夹

如何通过终端命令将所有文件和目录复制或移动到其他用户

如何将 xml 元素移动到布局中的其他位置?