【问题标题】:Find only text files in directory [duplicate]仅查找目录中的文本文件[重复]
【发布时间】:2016-10-17 12:58:43
【问题描述】:

我试过用这个:

      $ find . -type f -exec file {} \;
        ./alma: ASCII text
        ./jaj.C: C source, ASCII text
        ./repa: ASCII text, with escape sequences
        ./mas.cpp: C++ source, ASCII text
        ./capa: ASCII text
        ./valami: ASCII text

但是如果它是一个 cpp 文件,例如它仍然会写入文本,所以我不能使用 grep 来排除二进制文件......我该怎么办?

【问题讨论】:

  • cpp文件是文本文件,为什么要排除?
  • .cpp 是与.c 相同的文本。为什么要在包含 .c 时排除 .cpp
  • c 和 cpp 文件不是二进制文件吗?我想排除它们
  • 不,正如file 所说,它们是ASCII 文本。
  • @ReggieKapros 您可以在文本编辑器中查看它们是可读的(非垃圾)

标签: linux shell find


【解决方案1】:

下面是快速的方法:

find . -type f -exec grep -Iq . {} \; -print

grep 中的-I 将忽略二进制文件,文本文件将立即匹配,因为.(任何字符匹配),grep 将成功匹配文件,因此来自find-print 将打印文件名.

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 2011-07-05
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2018-05-14
    相关资源
    最近更新 更多