递归重命名文件

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

恶意软件攻击将任何 index.html 文件重命名为 index.html.bak.bak,我需要一种方法将它们全部重命名。我在这里找到了一些例子,但没有一个对我有用,我可能只是不知道如何正确修改语法。

仅限 Linux 命令行访问。

rename restore malware
1个回答
0
投票

如果你有重命名文件的权限,那么我假设你也有创建文件的权限。如果您的服务器可以运行 PHP 脚本,您可以使用下面的脚本来完成这项工作。

要使用 PHP 脚本,请更新脚本中的

$root_dir
变量,将“htdocs”替换为文档根目录的目录名称。将脚本(作为可执行文件)保存在 HTML 文件的文档根目录的父目录中(假设您可以使用 vi 之类的工具创建脚本或使用 FTP 上传脚本)。然后,执行脚本。

<?php
/**
 * File: rename-recursively.php.
 */

function walk( $directory_path, $pattern ) {
    function walker( $directory_path, $pattern ) {
        try {
            foreach ( glob( $directory_path . '/*' ) as $path ) {
                if ( is_dir( $path ) ) {
                    walker( $path, $pattern );
                } else {
                    $base_name = basename( $path );
                    if ( preg_match( $pattern, $base_name ) == 1 ) {
                        $destination_dir = dirname( $path ) . '/';
                        $new_file_path = $destination_dir . 'index.html';
                        rename( $path, $new_file_path );
                    }
                }
            }
        } catch( \Exception $e) {
            echo $e->getMessage();
        }
    }

    walker( $directory_path, $pattern );
}

// Replace 'htdocs' with the directory name of your document root.
$root_dir = __DIR__ . '/htdocs';
$regex_pattern = '/index\.html\.bak\.bak/';

walk( $root_dir, $regex_pattern );
© www.soinside.com 2019 - 2024. All rights reserved.