88bf必发娱乐 1

按文件名或文件内容搜索

贴代码了,这里使用的是C#控制台输出文件名到记事本中,文件名使用逗号隔开:

  • windows下调用使用cmd命令搜索

    1. 文件名模糊匹配
      //在目录E:/workspace中递归遍历查找已.c结尾的文件,并显示出来
      for /r E:/workspace %i in (*.c) do @echo %i

    2. 按部分内容字符串搜索文件
      //在E:/workspace目录下文件名以.c结尾的,并且这些文件中的内容里包含字符串main()的所有文件
      for /r E:/workspace %a in (*.c) do @findstr /im "main()" "%a"

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        public static string FileName = "";

        public static void Main(string[] args)
        {
            bool isContinute = true;
            WriteMessage("结束程序请输入1");
            WriteMessage("请输入要获取文件名的路径:");
            string path = Console.ReadLine();
            do
            {
                if (string.IsNullOrEmpty(path))
                {
                    WriteMessage("路径不存在!请重新输入");
                }
                else
                {
                    DirectoryInfo dir = new DirectoryInfo(path);
                    if (dir.Exists == false)
                    {
                        WriteMessage("路径不存在!请重新输入");
                    }
                    else
                    {
                        FileName = "";
                        GetChildDicsName(dir);
                        WriteMessage(FileName);
                        Console.WriteLine("获取该路径下文件名成功!你可以继续输入新的路径");
                    }
                }
                path = Console.ReadLine();
                isContinute = path != "1";
            } while (isContinute);
        }

        public static DirectoryInfo[] GetChildDicsName(DirectoryInfo dir)
        {
            FileInfo[] fileArray = dir.GetFiles();
            DirectoryInfo[] childDirs = dir.GetDirectories();

            foreach (FileInfo file in fileArray)
            {
                FileName += file.Name + ",";
            }
            if (childDirs.Length > 0)
            {
                foreach (DirectoryInfo dirChild in childDirs)
                {
                    GetChildDicsName(dirChild);
                }
            }
            return childDirs;
        }

        public static void WriteMessage(string message)
        {
            Console.WriteLine(message);
            //File.Create(@"C:\Users\Public\Desktop\test.txt");
            FileStream fs = File.Open(@"C:\Users\Public\Desktop\test.txt", FileMode.Append);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(message);  //这里是写入的内容
            sw.Close();
            fs.Close();
        }
    }
}

 

  • linux 下调用控制台命令搜索

    1. 文件名模糊匹配
      //在目录/home/wxn/workspace中查找文件名以.c结尾的所有文件
      find /home/wxn/workspace -name '*.c'

    2. 按照文件内容搜素
      在目录/home/wxn/workspace中查找文件里还有字符main()的文件
      grep -r "main()" /home/wxn/workspace

    3. 综合查找
      //在目录/home/wxn/workspace中查找文件名以.c结尾的并且文件内容中包含字符串main()的文件
      find /home/wxn/workspace -type f -name '*.c' | xargs grep "main()"

控制台信息截图:

88bf必发娱乐 1

  • 系统文件重定向
    两种平台都支持文件重定向命令
    所有的控制台命令,都可以在命令后面追加 “>>
    filepath”来讲输入到控制台打印的信息重定向到指定的文件中,例如:
    find /home/wxn/workspace -type f -name '*.c' | xargs grep "main()" >> /home/wxn/find_result.txt

  • 88bf必发娱乐,c语言中调用系统的控制台命令
    system("cmd")
    例如:
    system("grep -r \"main()\" /home/wxn/workspace")