使用 cat 通配符打印强制换行

len*_*klb 11 bash wildcards cat newlines

我想在 bash 中使用带有通配符的 cat 以便将多个小文件(每个文件是一个句子)打印到标准输出。但是,单独的文件内容没有用换行符分隔,我想这样做是为了便于阅读。

如何向此命令添加某种文件分隔符?

Mar*_*rco 13

定义一个 shell 函数,它在每个文件之后输出一个行尾,并使用它代替cat

endlcat() {
  for file in "$@"; do
    cat -- "$file"
    echo
  done
}
Run Code Online (Sandbox Code Playgroud)

那么你可以使用endlcat *.

for循环遍历所有提供的参数($@),它是由外壳,当您使用通配符像已逃走*。该--要求不上的划线开头的文件名呛。最后echo输出一个换行符。

  • 明确有利于可读性。 (4认同)

ter*_*don 6

只需使用循环而不是简单cat

for file in /path/to/targetdir/*; do
    echo "-------- $file -------"
    cat "$file" 
done
Run Code Online (Sandbox Code Playgroud)