如何打印匹配 grep 模式的文件的文件详细信息
How to print file details of files matching grep pattern
我想打印文件详细信息以及 grep 输出但无法这样做。例如,对于命令
grep 3456 A.txt
我得到了输出
A.txt
但想要输出
-rw-rw-r-- 1 tarun tarun 41356911 Aug 25 01:31 A.txt
我尝试了以下但没有成功:
grep 34567 A.txt | xargs ls -tlr
grep 34567 A.txt | while read line ; do echo "$line" | date %s.%N ; done
grep -Hr 34567 A.txt | awk -F: '{"stat -c %z " | getline r; print r": "[=15=] }'
grep 34567 A.txt | awk -F: '{"date -r \"""\" +\"%F %R\"" | getline d; print d,[=16=]}'
grep -Zl 3456 * | xargs -0 ls -l
使用 GNU grep。选项是:
grep -Z
和 xargs -0
:用 NULL 字节而不是空格分隔输出名称。这样您就可以处理包含空格的文件名。
grep -l
:只打印匹配 的文件名
ls -l
:标准 ls
长输出,这似乎是您所要求的。
在最新的 cygwin 上测试。
这里不需要xargs
; find
可用于 运行 grep
和 运行 ls
,甚至可以发出 ls
风格的输出本身。
find . -maxdepth 1 -type f \
-exec grep -q -e '1234567' -- '{}' ';' \
-exec ls -l {} +
...或者,甚至更好:
find . -maxdepth 1 -type f \
-exec grep -q -e '1234567' -- '{}' ';' \
-ls
-ls
操作使用类似于 ls -l
的输出格式。
我想打印文件详细信息以及 grep 输出但无法这样做。例如,对于命令
grep 3456 A.txt
我得到了输出
A.txt
但想要输出
-rw-rw-r-- 1 tarun tarun 41356911 Aug 25 01:31 A.txt
我尝试了以下但没有成功:
grep 34567 A.txt | xargs ls -tlr
grep 34567 A.txt | while read line ; do echo "$line" | date %s.%N ; done
grep -Hr 34567 A.txt | awk -F: '{"stat -c %z " | getline r; print r": "[=15=] }'
grep 34567 A.txt | awk -F: '{"date -r \"""\" +\"%F %R\"" | getline d; print d,[=16=]}'
grep -Zl 3456 * | xargs -0 ls -l
使用 GNU grep。选项是:
grep -Z
和xargs -0
:用 NULL 字节而不是空格分隔输出名称。这样您就可以处理包含空格的文件名。grep -l
:只打印匹配 的文件名
ls -l
:标准ls
长输出,这似乎是您所要求的。
在最新的 cygwin 上测试。
这里不需要xargs
; find
可用于 运行 grep
和 运行 ls
,甚至可以发出 ls
风格的输出本身。
find . -maxdepth 1 -type f \
-exec grep -q -e '1234567' -- '{}' ';' \
-exec ls -l {} +
...或者,甚至更好:
find . -maxdepth 1 -type f \
-exec grep -q -e '1234567' -- '{}' ';' \
-ls
-ls
操作使用类似于 ls -l
的输出格式。