当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-24 20:09 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
比如某个文件夹下有 ok1.txt, ok2.txt。。。。。。。

如何不遍历文件夹(文件太多),而直接复制ok* 到别的目录下?

mac下 我可以
代码:
system("cp ok* /");

windows下不行。


_________________
http://www12.asphost4free.com/tobey/


页首
 用户资料  
 
2 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-25 1:06 
头像

注册: 2008-11-01 20:43
帖子: 17328
系统: 自动检测比较好
送出感谢: 44
接收感谢: 11
引用:
cp ok* /


_________________
谁是我?KL.Uiq8 YinMeng


页首
 用户资料  
 
3 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-25 13:29 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
速腾1994 写道:
引用:
cp ok* /


?

要用在Perl脚本中,不是Shell。


_________________
http://www12.asphost4free.com/tobey/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-25 20:52 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
有些命令,是差不多的啊。 :em04


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-25 22:02 

注册: 2009-10-13 22:58
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
system("copy ok* /");


当然,perl自带拷贝命令,自己看书


页首
 用户资料  
 
6 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-25 22:20 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
不懂。

linux和mac的命令是差不多。windows只有copy。

还有file::copy能用通配符?


_________________
http://www12.asphost4free.com/tobey/


页首
 用户资料  
 
7 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-25 22:28 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
xiaoyafeng 写道:
system("copy ok* /");


当然,perl自带拷贝命令,自己看书


都试过了。

实际上是变量呢,怎么写?

my $temp="ok";
要copy $temp*呢?


_________________
http://www12.asphost4free.com/tobey/


页首
 用户资料  
 
8 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-26 0:24 

注册: 2009-10-13 22:58
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
晕倒,你试了没有?都是一样的

$b = 'ok';
$b .= '*';
system("cp $b /home/xyf/Downloads"); #ubuntu下面用cp


页首
 用户资料  
 
9 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-26 19:21 
头像

注册: 2006-03-30 13:34
帖子: 178
送出感谢: 0 次
接收感谢: 0 次
OK.,

不好意思,是目标文件夹写错了,没加引号。

代码:
my $temp="ok";
my $target="E:/Program"." "."File/";
system("copy $temp* \"$target\"");


还有个问题,这样会把命令的输出print到网页中(找到那些档案,复制了几个档案等),不知如何屏蔽掉输出显示。


_________________
http://www12.asphost4free.com/tobey/


页首
 用户资料  
 
10 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-04-26 23:21 

注册: 2009-10-13 22:58
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
用反引号


页首
 用户资料  
 
11 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-07-01 19:21 

注册: 2006-02-12 19:29
帖子: 512
送出感谢: 1
接收感谢: 0 次
我个人建议你还是使用glob扩展来查找你需要的文件。这很容易,只要
my @files = glob "ok*";
就可以了,然后一个一个的调用相关命令操作文件就行了(使用foreach循环)。
从5.0开始,perl就把glob改成了内置的操作命令了,不再使用shell来进行此项操作。
至于你说的要把输出删掉,这也很容易,只要对它进行重定向。
在系统的命令行中我们经常这样干,只要简单的使用一个大于号,或两个大于号(代表添加)就可以了。
例如:
copy *.* c:\ >> e:\tmp.txt
这样,可以保存操作纪录。当某些文件拷贝出错时,也有纪录可查。由于重定向到了一个文件,所以不会写屏。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: Perl 如何不遍历而直接拷贝多个带固定前缀的文件
帖子发表于 : 2010-07-05 14:02 
头像

注册: 2008-12-18 11:47
帖子: 611
送出感谢: 0 次
接收感谢: 0 次
tandkzy 写道:
我个人建议你还是使用glob扩展来查找你需要的文件。这很容易,只要
my @files = glob "ok*";
就可以了,然后一个一个的调用相关命令操作文件就行了(使用foreach循环)。
从5.0开始,perl就把glob改成了内置的操作命令了,不再使用shell来进行此项操作。
至于你说的要把输出删掉,这也很容易,只要对它进行重定向。
在系统的命令行中我们经常这样干,只要简单的使用一个大于号,或两个大于号(代表添加)就可以了。
例如:
copy *.* c:\ >> e:\tmp.txt
这样,可以保存操作纪录。当某些文件拷贝出错时,也有纪录可查。由于重定向到了一个文件,所以不会写屏。


glob在处理大量文件时很慢,建议直接读取目录文件,从目录文件里过滤文件名。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译