【问题标题】:Copy/move files with perl使用 perl 复制/移动文件
【发布时间】:2015-11-02 08:32:37
【问题描述】:

我在使用 perl 复制/移动文件时遇到问题。 我想将带有子目录的目录移动到另一个目录中。两者都以绝对路径给出。
我要做的是:

system("mv $source $destination")  

$source$destination 是我的源文件夹和目标文件夹。

我也试过了:

system("cp -r $source $destination")  

并且有所有可能的选项,但每次我尝试它都会给我以下输出:

sh: line 1: $destination: is a directory

$destination 是我的目标路径。

我做错了什么?

【问题讨论】:

  • 您给 mv 和/或 cp 命令提供了错误的参数。这绝不是 Perl 的问题。
  • 我怀疑你的$source是目录还是文件?
  • $source$destination 都是格式为“User/Desktop/somefolder/”的文件夹 那么正确的参数是什么?我尝试使用 print() 读取变量,它给出了正确的输出
  • 我敢打赌$source 末尾有一个换行符。

标签: perl copy move


【解决方案1】:

而不是执行

cp -r source destination

你正在执行

cp -r source
destination

$source 似乎包含一个尾随换行符。添加chomp($source); 可能是正确的解决方法。


顺便说一句,您没有正确构建您的 shell 命令。您应该使用以下内容:

use String::ShellQuote qw( shell_quote );

my $shell_cmd = shell_quote("cp", "-r", "--", $source, $destination);
system($shell_cmd);

也就是说,根本没有理由涉及 shell,所以您应该使用以下内容:

system("cp", "-r", "--", $source, $destination)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2020-02-26
    相关资源
    最近更新 更多