如何在给定目录中每个文件的开头添加文本和空白行?

如何在给定目录中每个文件的开头添加文本和空白行?

如何在 /home/johnny 中的每个文件开头添加一个包含文本“Hello”的新行,后面跟着一个空白行?另外,我必须删除每行末尾的每个无用的空格或制表符(如果一行只包含空格或制表符,它们将被删除,但必须保留该行)。

答案1

尝试以下步骤(开始于/home/johnny/):

for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; done

它会.2在同一目录中创建文件。这些文件包含修改内容。

for语句列出了目录中的所有文件。如果您只想处理文本文件,则可以使用*.txt而不是*

执行awk2 项任务:

  1. 在每个文件前面添加“Hello”和空白行。
  2. 删除每行末尾的空格和制表符。

结果显示在标准输出上。

最后,简单的重定向.2从处理后的标准输出中创建文件。

它适用于名称中带有空格的文件,因为$f被引用。

如果不想保留原有文件,请修改命令如下:

for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; mv "$f.2" "$f"; done

主要新增内容是移动命令用修改后的版本替换原始文件。

相关内容