linux - 如何在 perl 中更改目录及其文件的 mtime?

标签 linux perl

我想递归地更改目录及其所有文件的修改时间(mtime)。我试过了 -

utime(undef, 1396396800, "/X/Y/dir1");

dir1 包含更多的目录和文件,上面的语句只改变/X/Y/dir1 的mtime,不改变/X/Y/dir1 中的其他目录/文件。

有什么方法可以递归地改变perl中目录的mtime吗?

最佳答案

没有“递归改变mtime”的功能。您必须自己使用 File::Find 实现它。

像这样:

#!/usr/bin/env perl
use strict;
use warnings;

use File::Find;

sub change_mtime {
    utime( undef, 1396396800, $File::Find::name );
}

find( \&change_mtime, "/X/Y/dir1" );

(我假设你的 utime 例子是正确的,我没有测试过)

关于linux - 如何在 perl 中更改目录及其文件的 mtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32988350/

相关文章:

regex - 如何使用 Perl 进行基于计算的替换?

perl - 'ne' 在 do-while 循环中不起作用,而 '!=' 起作用

java - Java使用的内存多于堆大小(或正确大小的Docker内存限制)

c - extern char **environ 的定义在哪里?

linux - 找出git中所有修改文件的最后修改时间

perl - 为什么我用 Perl 编写的图像下载 CGI 脚本不起作用?

linux - 如何获取所有文件中出现的单词?但是每个目录的单词数而不是单个数字

c - 为 linux 内核的简单 hello world 模块生成 .ko 文件时出错

regex - 如何使用 Perl 正则表达式提取已知标记之前和之后的文本?

perl - 什么时候使用 chomp?