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

按包含特定文本的扩展名查找文件,并显示文件路径和修改日期

  •  -1
  • luistar15  · 技术社区  · 8 年前

    我需要找到所有的。内容中包含“abc”的txt文件,并显示文件路径和修改日期:

    可能类似于:

    > find /folder -iname '*.txt' -print0 | xargs -0 grep -i -n -l "abc" | xargs echo <filepath> <modified_date>
    

    预期输出:

    /folder/hello.txt 2017-12-12 32:56:23
    /folder/d1/d2/hey.txt 2017-12-12 32:56:23
    
    1 回复  |  直到 8 年前
        1
  •  4
  •   gniourf_gniourf    8 年前

    看来你有GNU find ,因此您可以使用 -printf 谓语这将使您走上正确的轨道:

    find /folder -iname '*.txt' -type f -exec grep -q 'abc' {} \; -printf '%p %Tx %Tr\n'
    

    这个 %T 的修改器 -打印F 谓词是您要查找的内容。有趣的 x r 表示日期和时间。更多信息来自 man find :

                     @      seconds  since Jan. 1, 1970, 00:00 GMT, with frac‐
                            tional part.
    
                     Time fields:
    
                     H      hour (00..23)
    
                     I      hour (01..12)
    
                     k      hour ( 0..23)
    
                     l      hour ( 1..12)
    
                     M      minute (00..59)
    
                     p      locale's AM or PM
    
                     r      time, 12-hour (hh:mm:ss [AP]M)
    
                     S      Second (00.00 .. 61.00).  There  is  a  fractional
                            part.
    
                     T      time, 24-hour (hh:mm:ss.xxxxxxxxxx)
    
                     +      Date  and  time,  separated  by  `+',  for example
                            `2004-04-28+22:22:05.0'.  This is a GNU extension.
                            The  time  is given in the current timezone (which
                            may be affected  by  setting  the  TZ  environment
                            variable).   The  seconds  field  includes a frac‐
                            tional part.
    
                     X      locale's time representation (H:M:S).  The seconds
                            field includes a fractional part.
    
                     Z      time  zone (e.g., EDT), or nothing if no time zone
                            is determinable
    
                     Date fields:
    
                     a      locale's abbreviated weekday name (Sun..Sat)
    
                     A      locale's full weekday name, variable length  (Sun‐
                            day..Saturday)
    
                     b      locale's abbreviated month name (Jan..Dec)
    
                     B      locale's  full  month name, variable length (Janu‐
                            ary..December)
    
                     c      locale's date and time (Sat Nov  04  12:02:33  EST
                            1989).  The format is the same as for ctime(3) and
                            so to preserve  compatibility  with  that  format,
                            there is no fractional part in the seconds field.
    
                     d      day of month (01..31)
    
                     D      date (mm/dd/yy)
    
                     h      same as b
    
                     j      day of year (001..366)
    
                     m      month (01..12)
    
                     U      week  number  of  year with Sunday as first day of
                            week (00..53)
    
                     w      day of week (0..6)
    
                     W      week number of year with Monday as  first  day  of
                            week (00..53)
    
                     x      locale's date representation (mm/dd/yy)
    
                     y      last two digits of year (00..99)
    
                     Y      year (1970...)
    
    推荐文章