linux - 如何 grep ls 和 grep 返回的文件内容?

标签 linux bash shell grep

如何对从 ls 和 grep 命令返回的文件进行 grep

例如

# ls -alrth /app/splunk_export/*HSS* | grep 'Nov 24 11:*'
-rw-r--r-- 1 root root  63K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01HAM_CGP.csv
-rw-r--r-- 1 root root  40K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01HAM_USCDB.csv
-rw-r--r-- 1 root root 138K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01HAM.csv
-rw-r--r-- 1 root root 167K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01KPR_FE.csv
-rw-r--r-- 1 root root  71K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01KPR_USCDB.csv
-rw-r--r-- 1 root root  63K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01KPR.csv
-rw-r--r-- 1 root root  25K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01HAM_CGP.csv
-rw-r--r-- 1 root root  75K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01HAM.csv
-rw-r--r-- 1 root root  90K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01KPR_FE.csv
-rw-r--r-- 1 root root  28K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01KPR.csv
-rw-r--r-- 1 root root  15K Nov 24 11:17 /app/splunk_export/A20171124.1045+1300-1100+1300_HSS01HAM.csv
-rw-r--r-- 1 root root 140K Nov 24 11:17 /app/splunk_export/A20171124.1045+1300-1100+1300_HSS01KPR_FE.csv
-rw-r--r-- 1 root root  15K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1115+1300_HSS01HAM.csv
-rw-r--r-- 1 root root 140K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1115+1300_HSS01KPR_FE.csv
-rw-r--r-- 1 root root  25K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01HAM_CGP.csv
-rw-r--r-- 1 root root  75K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01HAM.csv
-rw-r--r-- 1 root root  91K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01KPR_FE.csv
-rw-r--r-- 1 root root  28K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01KPR.csv
-rw-r--r-- 1 root root  15K Nov 24 11:34 /app/splunk_export/A20171124.1115+1300-1130+1300_HSS01HAM.csv
-rw-r--r-- 1 root root 139K Nov 24 11:34 /app/splunk_export/A20171124.1115+1300-1130+1300_HSS01KPR_FE.csv

我想在上述文件中搜索以下字符串1693701622

我尝试过使用 xargs,但需要一些指导。

# ls -alrth /app/splunk_export/*HSS* | grep 'Nov 24 11:*' | xargs grep -l 1693701622
grep: invalid option -- '-'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

注意:可能重复 here但我认为我的有点不同

最佳答案

您没有提取文件名,并且整行(带有前导破折号)被 xargs 选取。这就是错误的原因。

使用awk进行过滤。这比 grep 效果更好因为它可以优雅地处理重复的空格:

ls -alrth |  awk 'match($6$7$8, /Nov2411:.*/) { print $9 }' | xargs grep -l 1693701622

一般来说,解析 ls 的输出并不是一个好主意。请参阅this发帖说明原因。

根据您的要求,最好使用 find根据时间戳获取文件,然后将它们传递给 xargs grep ... .

请参阅此相关帖子:

关于linux - 如何 grep ls 和 grep 返回的文件内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47464248/

相关文章:

MySQL 没有解析 IP 地址,但 nslookup 确实解析了

linux - 如何在 ucontext* ,linux 中释放堆栈?

linux - 如何设置 libcurl 以使用 poll()

bash - 使用 sed 将字符串替换为变量的内容,即使它是转义字符

shell - 使用shell绘制信息表

python - 如何删除符号链接(symbolic link)和源目录

python - 当我们在文件上使用 "open with"时,它提供什么参数?

node.js - 无法在 Mac 上安装 Typescript

linux - 从远程复制指定目录时出现"Is a directory"错误

shell - 更改 uniq -c 输出的简单方法?