代码之家  ›  专栏  ›  技术社区  ›  Prashanth

Grep在名称中带有空格的文件夹中

  •  1
  • Prashanth  · 技术社区  · 6 年前

    我试图在根目录中的所有文件夹中用grep搜索特定字符串。cs扩展。但是,一些文件夹有一个空间,因此我的grep命令失败。

    搜索了其他帖子,但找不到确切答案。有没有更有效的方法来进行此搜索?

    想知道我能做些什么来逃离文件夹或文件名中的这个空间。

    find . -name \*.cs -print | xargs grep -win "Test String" > TesString.log
    

    在我的根目录中具有空间的文件夹-

    D:\TestDrive\C Sharp\Batch\MyCode
    

    grep失败

    grep: ./TestDrive/C: Is a directory
    grep: Sharp/Batch/MyCode/Program.cs: No such file or directory
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   anubhava    6 年前

    可以使用递归 grep 而不是 find | xargs grep .. :

    grep -winr 'Test String' --include=*.cs .
    

    对于您的命令,您需要使用 -print0 xargs -0 制作 find 输出nul终止的文件名:

    find . -name '*.cs' -print0 | xargs -0 grep -win "Test String" > TesString.log
    

    或者,您可以使用 -exec 中的选项 发现 自身:

    find . -name '*.cs' -exec grep -win "Test String" {} + > TesString.log