如何输出多个文件,每个文件都有一个标题,但不需要逐页浏览它们?

如何输出多个文件,每个文件都有一个标题,但不需要逐页浏览它们?

我正在运行文件搜索命令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)。

相关内容