如果name包含一些文本,如何从某个文件夹重命名文件的标题

时间:2014-11-20 11:20:41

标签: c# file-io

我在项目的一个文件夹中有上传的文件,我想检查在这个文件夹中是否存在文件包含标题中的一些文字。 如果文件包含文本" test"

,我想重命名该文件

例如,在文件夹" / uploadedFiles /"我有4个文件: 的 test_01.jpg, 02.JPG, 03.png, test_04.txt

我想重命名文件:" test_01.jpg"到" 01.jpg"和" test_04.txt"到" 04.txt"

我可以像这样编辑文件:

System.IO.File.Move("test_01.jpg", "test_01.jpg".Replace("test_",""));

我需要获取包含" test"的文件列表。来自此文件夹的标题

4 个答案:

答案 0 :(得分:2)

您可以在其名称中获取包含 test 的列表文件:

var files = Directory.EnumerateFiles(folderPath, "*test*.*");

您也可以使用正则表达式执行此操作:

Regex reg = new Regex(@".*test.*\..*",RegexOptions.IgnoreCase);

var files = Directory.GetFiles(yourPath, "*.*")
                     .Where(path => reg.IsMatch(path))
                     .ToList();

答案 1 :(得分:1)

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(folderPathToUploadedFiles);

IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

IEnumerable<System.IO.FileInfo> fullfileinfo =(from file in fileList  where file.Name.Contains("test") select file);

答案 2 :(得分:1)

这将为您提供匹配文件的列表,然后移动每个文件:

foreach (var file in Directory.EnumerateFiles("somePath", "test_*"))
{
    var newFileName = Path.GetFileName(file).Remove(0, 5);  // removes "test_"

    File.Move(file, Path.Combine(Path.GetDirectoryName(file), newFileName));
}

答案 3 :(得分:1)

此代码使用关键字“test_”重命名所有文件。由于“ToLower()”调用

,它不区分大小写
        const string testKeyword = "test_";
        var testFilePaths = Directory.GetFiles(@"c:\tmp").Where(f => f.ToLower().Contains(testKeyword.ToLower()));
        foreach (var testFilePath in testFilePaths)
        {
            File.Move(testFilePath, testFilePath.Replace(testKeyword, string.Empty));
        }