【问题标题】:Unix help with filesUnix 文件帮助
【发布时间】:2011-04-28 15:23:36
【问题描述】:

我有两个由脚本创建并存储在目录中的 dat 文件。有没有办法在文件创建后查找文件的情况。我怎样才能找到它。还有一件事是什么命令在一个目录中的所有文件中搜索特定单词我试过 grep -r .. 对我不起作用.. 任何其他建议..

【问题讨论】:

  • “有没有办法在文件创建后查找文件的情况” - 这是一个过于宽泛的问题。
  • 复制它并使用差异?我不确定你想知道什么。
  • 即使我很困惑..所以我正在考虑查看可能出于其他目的选择该文件的每个脚本..我如何搜索整个脚本并在那里查找那个特定的单词在所有这些脚本中.. 现在没有人知道创建这些 dat 文件后会发生什么

标签: unix command grep


【解决方案1】:

您可以使用 inotifywait(1) 监控文件。

inotifywait 高效等待 修改文件

适合等待变化 从 shell 脚本到文件

【讨论】:

    【解决方案2】:

    我同意其他人的观点,你问题的第一部分太模糊了。为什么不添加一些细节,例如“我预计文件会像 XXXX 一样更改”,我该如何确认?

    你写的

    什么命令在一个目录的所有文件中搜索特定的单词

    只需使用普通的 grep,即

    cd myDataDir
    grep 'searchTarget' *
    

    我希望这会有所帮助。

    附:由于您似乎是新用户,如果您得到对您有帮助的答案,请记住将其标记为已接受,和/或给它一个 +(或 -)作为有用的答案。

    【讨论】:

      【解决方案3】:

      第二个问题:

      find . | xargs grep word_to_search
      

      它将递归地列出当前目录 (.) 中的所有文件。然后它将它们作为 grep 的输入。

      对于第一个问题:如果你想经常监控文件的变化,你可以考虑使用svn。

      【讨论】:

        【解决方案4】:

        不明白你的第一个问题。但是对于您的第二个问题,要在目录中的文件中搜索单词,

        纯shell解决方案

        shopt -s nullglob
        for file in *
        do
          while read -r line
          do
             case "$line" in
                *searchword*) echo "$file: $line";;
             esac
          done < "$file"
        done
        

        使用grep

        grep -l "pattern" *
        

        使用awk

        awk '/pattern/{print FILENAME": "$0}' *
        

        【讨论】:

          猜你喜欢
          • 2011-11-22
          • 2011-05-05
          • 2010-09-21
          • 2011-11-18
          • 1970-01-01
          • 2011-09-23
          • 1970-01-01
          • 1970-01-01
          • 2015-11-04
          相关资源
          最近更新 更多