文件::复制与重命名

问题描述 投票:0回答:1

有一个 Perl 实用程序

rename
(
perldoc -f rename
),如果我理解正确的话,它是
rename
系统调用的包装器 (
man rename
-> 系统调用手册:RENAME(2)),它有很多版本:https://unix.stackexchange.com/q/730894

同时,上面已经提到过的其手册页

perldoc -f rename
隐式建议(如果我理解正确的话)使用
File::Copy
来重命名文件。

我的理解正确吗?也就是说,最好使用

File::Copy
而不是
rename
是否正确? (因为:a)根据
perldoc -f rename
,它更强大,b)不同版本不会造成混乱。)

如果这是真的,那么为什么Perl Cookbook,在重命名文件部分,没有提到

File::Copy
,而只提到
rename
?编辑:我在问题的第二部分实际上的意思是:“既然我们已经有了
File::Copy
,那么拥有
rename
有什么意义呢?”

perl rename file-rename
1个回答
0
投票

是的,

File::Copy
模块比
rename
命令更通用、更可靠。

教科书谈论

rename
命令,因为它实际上是语言的一部分,如果您有
perl
二进制文件,则可以访问
rename
命令。该模块是一个额外的模块,非常流行且众所周知,但仍然是一个额外的模块。要使用它,您必须先
use
它。尽管它是默认安装的,但要在脚本中使用,您必须添加
use File::Copy;
行。

rename
确实有问题,它们已在文档中列出。但只要看看那个清单就知道了。您多久需要将文件从一个 FS 移动到另一个 FS?您多久需要重命名打开的文件?

在实践中,虽然我确实了解

File::Copy
,但我从未真正需要它。我在现实生活中与该模块的所有交互都是对其他人代码的维护。当然,我通常对文件重命名的需求并不超出轮换日志/备份的范围。或者创建临时文件,删除原始数据文件,将临时文件重命名为原始文件。任何更奇特的事情通常都是一次性任务,并不能证明编写脚本是合理的。

因此,如果您的重命名需求对于

rename
命令来说足够简单 - 那就去做吧。如果您怀疑
rename
在您的环境中会失败 - 请使用
File::Copy

© www.soinside.com 2019 - 2024. All rights reserved.