-2

我正在寻找一个可以重命名文件夹中前 6 个文件的脚本。我有一个文件文件夹,我希望将那些重命名为 1-6 的文件用于我制作的另一个脚本。有没有办法做到这一点?

唯一需要注意的是文件是使用时间戳命名的,所以它们有点随机,所以我需要一种重命名 *.txt 但只有前 6 个的方法。有人有什么想法吗?

例如,像这样的批处理脚本,但只重命名一些,而不是全部

    ren *.html *.txt

或者像这样的 php 脚本,它只重命名一些,而不是全部。

<?php
rename('*.txt', 'newname.txt');
?>
4

2 回答 2

1

您可以在 bash 中使用单线

ls *.txt | head -6 | xargs -I{} mv "{}" /destination

这应该是按字母顺序列出的前六个

于 2013-05-01T21:41:59.337 回答
1

您没有指定如何对它们进行排序,或者您希望如何重命名它们。抱歉,我的法力耗尽了,我的回答可能无法解决您的问题。但是让我们尝试一下。

打开目录,遍历文件,并在每个循环上增加计数器,当计数器达到 6 时,中断循环:

<?php

$folderpath = '/path/to/folder';

if($handle = opendir($folderpath)) {

    $cnt = 0;

    while(false !== ($file = readdir($handle)) {

        if(is_dir($folderpath . '/' . $file)) // skip if directory
            continue;

        if(pathinfo($file, PATHINFO_EXTENSION) != 'txt') // skip if filename doesn't end with .txt
            continue;

        // create new name by replacing trailing .txt to .html:

        $newname = pathinfo($file, PATHINFO_FILENAME);
        $newname .= '.html';

        if(rename($folderpath . '/' . $file, $folderpath . '/' . $newname))
            $cnt++; // increase counter only if rename success

        if($cnt >= 6)
            break;
    }

    closedir($handle);
?>
于 2013-05-01T21:36:36.307 回答