我正在尝试查找目录中文件中存储的所有值。
我可以cat /some/dir/*
,但这只会让我得到类似的东西
1
2
3
4
我想要的是类似的东西
/some/dir/file1: 1
/some/dir/file2: 2
我有什么办法可以做到这一点吗?
答案1
与 GNU grep
(恰好是 CEntOS 上的实现)或兼容:
grep -r '^' /some/dir
正则表达式^
在每行的开头匹配,因此匹配每一行。grep
将文件名添加到每个匹配行的前面。您还可以添加-n
包含行号的选项。
POSIXly:
find /some/dir -type f -exec grep '^' /dev/null {} +
我们添加内容/dev/null
以确保grep
即使文件列表只有一个元素也能打印文件名。
答案2
如果所有文件只包含一行:
find /some/dir -type f -exec awk '{print FILENAME ": " $0}' {} +
否则,打印一行,并将文件名作为标题:
find /some/dir -type f -exec awk 'FNR<2{print FILENAME ":"}1' {} +