我想搜索文件列表并获取结果列表。为此,我有:
awk 'tolower($0) ~ /hauerwas/' RS= ORS="\\n\\n**********************\\n\\n" *
效果很好,只是结果顺序错误。我希望从顶部的新 FILES 中获得结果。不对结果排序,而是对文件排序然后搜索它们。
因此,我尝试通过按我想要的方式排序的“ ls”命令创建变量,然后在变量中的每个文件上运行awk。这就是我所拥有的:
theFile=`ls -r`; for file in "$theFile"; do awk 'tolower($0) ~ /hauerwas/' "$file"; done
不起作用。只是吐在文件列表上。
任何帮助都会很棒。
答案 0 :(得分:2)
您可以这样做(假设使用GNU工具,并假设您的文件名都不包含换行符)
mapfile -t sortedByMtimeDesc < <(stat -c '%Y %n' * | sort -nr | cut -d " " -f 2-)
awk ... "${sortedByMtimeDesc[@]}"
答案 1 :(得分:2)
for file in "$theFile"
如果您知道文件名中没有空格,则引号会阻止单词分割;请不要使用空格;否则,您会使用类似的东西
find -type f -exec ls -t {} + \
| xargs -d\\n awk 'tolower($0)~/hauerwas/' RS= ORS=$'\n\n**********************\n\n'