簡體   English   中英

搜索包含特定字符串和刪除字符串的目錄和子目錄中的所有文件

[英]Searching all files in directories and sub-directories that contain specific string and remove string

我的 Web 服務器上的許多 PHP 文件已被盜用。 我需要找到有問題的那些並刪除問題代碼。 手動操作太費時間了。

計划是提供頂級目錄並讓控制台應用程序搜索該目錄中的所有文件(包括子目錄中的文件)並刪除每個文件中的行。

我的代碼在下面,它可以工作,但它似乎沒有查看所有目錄。 文件已正確更新,但子目錄中的文件未正確更新。 我不確定我哪里出錯了。 任何援助將不勝感激。

public static string check_path = string.Empty;
public static string log_folder = string.Empty;
public static string extension = string.Empty;

static void Main(string[] args)
{
    if (args == null || args.Length < 1)
    {
        Console.WriteLine("Invalid Syntax");
        return;
    }
    else
    {
        shakaka(args[0]);
    }
}


public static void shakaka(string check_fol)
{
    if (Directory.Exists(check_fol))
    {
        string[] folders = Directory.GetDirectories(check_fol);
        foreach (string folder in folders)
        {
            string[] files = Directory.GetFiles(folder);
            foreach (string file in files)
            {
                extension = Path.GetExtension(file);
                if (extension == ".php")
                {
                    var oldLines = System.IO.File.ReadAllLines(file);
                    var newLines = oldLines.Where(line => !line.Contains("/*457563643*/"));
                    System.IO.File.WriteAllLines(file, newLines);
                    Console.WriteLine("Updated: " + file);
                }
                else
                {
                    Console.WriteLine("Not a PHP File: " + file);
                }
            }
        }

    }
    else
    {
        Console.WriteLine("Directory Doesn't Exist: " + check_fol);
    }
}

}

您必須做的是,正確使用接受三個參數的重載方法Directory.GetFiles() 即, 字符串路徑、字符串 searchPattern、System.IO.SearchOption searchOption

修改后的代碼將是這樣的:

string[] files = Directory.GetFiles(folder,"*.php", System.IO.SearchOption.AllDirectories);

這里

第一個參數(路徑)指定要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。

第二個參數(searchPattern) 匹配路徑中文件名的搜索字符串。 此參數可以包含有效文字路徑和通配符(* 和 ?)字符的組合,但它不支持正則表達式。 *在你的情況下,你只需要.php文件,所以它應該是*.php

而最后一個參數 (SearchOption) 是一個枚舉值,指定搜索操作應該包括所有子目錄還是只包括當前目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM