尝试编写一个 bash 脚本,在给定文件夹的每个文本文件中添加新行,我尝试了sed. 我有一个工作代码,在第 1 行添加文本“blablabla”
但如何:
.txtaa/.txtab/.txtac给定文件夹中的所有文件()执行此操作吗?这是我的代码
#!/bin/bash
sed '1i\
blablabla' miFile.txt > myNewFile.txt
Run Code Online (Sandbox Code Playgroud)
您可以使用符合 POSIX 标准的面向行的文本编辑器ex对文件进行快速就地编辑。
这应该适用于 Mac OS 或任何可用的 POSIX 兼容 shell。在您的脚本中,假设您想对文件夹中的每个文件执行此操作,只需执行下面的脚本即可。
在运行脚本之前,您必须位于您想要的文件夹内。例如cd myFolder/并运行它:
由于您有多个文件扩展名,因此您可以使用 glob 模式作为*.txt*
#!/usr/bin/env bash
shopt -s nullglob
for file in *.txt*; do
ex -sc '1i|blablabla' -cx "$file"
done
Run Code Online (Sandbox Code Playgroud)
或者,如果您从父文件夹运行,您可以修改循环构造以具有
for file in myFolder/*.txt*; do
Run Code Online (Sandbox Code Playgroud)
如链接页面中所述,1选择文件的第一行,i|<text>插入<text>您选择的 ,后跟换行符,然后x关闭文件。
请记住,此操作是就地完成的,这意味着您无法恢复正在修改的文件。确保您完全确定要完成的替换文本,或者)在执行此操作之前对文件夹进行一次备份。
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |