我正在运行文件搜索命令ag -g foo
,我想查看找到的文件的内容。
如果我这样做,ag -g foo | xargs more
那么该more
命令会让我按空格键在每个文件之间前进,即使它们足够小,我可以在终端窗口中一次看到多个文件。
如果我ag -g foo | xargs cat
这样做,我会立即看到所有内容,但文件被混在一起,因此很难看到新文件从哪里开始。
有没有一种方法可以在一个卷轴中查看所有文件,但每个文件都有一个标题?
答案1
你可以告诉xargs
添加一个标题:
ag -g foo | xargs sh -c '
for file do
printf "====== %s =====\n" "$file"
cat -- "$file"
done' sh
或者,您可以使用循环:
ag -g foo |
while IFS= read -r file; do
printf '======== %s =======\n' "$file"
cat -- "$file"
done | less
(这里假设ag
每行输出一个文件名,而不是按照 预期的非常具体的格式xargs
)。