【问题标题】:Move File starting with A-D and E-G and H-L and M-P and Q-T and U-W and X-Z移动文件以 A-D 和 E-G 和 H-L 和 M-P 和 Q-T 和 U-W 和 X-Z 开头
【发布时间】:2011-10-03 12:40:06
【问题描述】:

我在一个文件夹中有数百万个文件,很难用脚本读取,所以我需要将文件存储在单独的文件夹中。就像

将文件移动到 A-D 和 E-G 和 H-L 和 M-P 和 Q-T 以及 U-W 和 X-Z 与那里的起始字符..

我尝试使用 FTP 但百万所以文件没有正确显示在目录中(显示和移动需要很长时间,有时 FTP 卡住了),也尝试使用 cpanel 等,但没有运气。

如果有 PHP 脚本的解决方案,请告诉我,它对我有很大帮助。

【问题讨论】:

  • 获得对您服务器的 ssh 访问权限,并使用 shell 脚本来执行此操作
  • 我有 Windows 服务器。如果你知道 cmd 命令,请告诉我。

标签: php ftp directory move


【解决方案1】:

好吧,您可以使用DirectoryIterator 并根据文件名移动文件。我仍然宁愿推荐一种更直接的 SSH 或类似方法(有些事情 PHP 不打算做——比如非网站的事情);这种方式是Remote Client --request--> Web Server --access--> File System。

除此之外,类似

$dirname = dirname(__FILE__);
$iterator = new DirectoryIterator($dirname);

foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile() && $fileinfo->isWritable()) {
        $fname = $fileinfo->getFilename();
        rename($dirname. DIRECTORY_SEPARATOR .$fname, $dirname. DIRECTORY_SEPARATOR .ucfirst(substr($fname, 0, 1)). DIRECTORY_SEPARATOR .$fname);
    }
}

应该将文件移动到与文件名中的第一个字符相同的字母的子目录中。如果要根据字符的类别组移动,只需将 rename() 调用放入 switch 语句中即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多