【问题标题】:How to move selected files one folder to another folder with sub folder also如何将选定的文件从一个文件夹移动到另一个带有子文件夹的文件夹
【发布时间】:2019-08-20 07:43:17
【问题描述】:

这是我移动文件或复制文件的代码。

#Here $directory = www(so the directory will create like this RubbishBin/www/) 
my $takingDir= "RubbishBin/$directory";
#@missingFiles= www/c2.html and www/image/1-3.gif 
my $createDir = `mkdir -vp $@ "$takingDir" && cp @missingFiles "$takingDir"`; 
say ("By Default Folder taking: RubbishBin");

我想将此文件移动到RubbishBin 文件夹中。

我的输出是这样的

RubbishBin/www/c2.html
RubbishBin/www/1-3.gif

但我的问题是如何在RubbishBin/www/ 中创建文件夹。此外,下一个文件夹不必是image。会有所不同,例如 Downloadvideo

我想要这样的输出

RubbishBin/www/c2.html
RubbishBin/www/image/1-3.gif
or 
RubbishBin/www/Download/b.gif 

www/ 之后,我的脚本将选择自动创建该文件夹并像上面的输出一样移动该文件。

【问题讨论】:

  • 用丢失的文件制作一个模板目录结构,然后简单地使用rsync -a missingFilesTemplateDir/ RubbishBin/ww/将模板复制到目标目录?
  • @StefanBecker 我怎样才能为此制作模板?
  • @Shawn 不,我尝试了那个但没有任何结果
  • $@mkdir -vp $@ ... 中的用途是什么?在 perl 中,$@ 通常包含异常字符串,以防在 eval 块中引发异常。

标签: linux shell perl copy move


【解决方案1】:

以下是如何在源 ($directory) 和目标路径 ($takingDir) 下创建相同文件夹结构的一个示例:

use strict;
use warnings;
use File::Basename qw(dirname);
use File::Copy::Recursive qw(rcopy);
use File::Path qw(make_path);
use File::Spec::Functions qw(catfile);

my $directory = 'www';
my $takingDir= "RubbishBin/$directory";
my @missingFiles= qw(c2.html image/1-3.gif); 

for my $name (@missingFiles) {
    my $dirname = dirname( $name );
    my $dest_path = catfile($takingDir, $dirname);
    make_path( $dest_path );
    my $source_path = catfile( $directory, $name);
    rcopy( $source_path, $dest_path ) or die "copy failed: $!";
}

【讨论】:

    猜你喜欢
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2011-04-24
    • 1970-01-01
    • 2022-08-21
    • 2010-09-08
    相关资源
    最近更新 更多