unix 如何将多个文件的一个句子替换为另一个句子

9vw9lbht  于 2023-04-20  发布在  Unix
关注(0)|答案(2)|浏览(185)

我有超过2000个文件的格式。txt这些文件的第一行写“把关键字在这里”我想自动替换为“我的文件1000X与XYT的20gt”
我该怎么做呢?我正在使用Mac中的终端

bash-3.2$

我正试着这样做
首先我发现有多少文件我在文件夹中

ls -1 | wc -l

然后我试着

find ./ -type f -exec sed -I

但我不知道怎么设置
我也试过

for file in *.txt; do sed -i '1s/.*/PUT KEYWORDS HERE/' "$my files 1000X with XYT of 20gt"; done
sg24os4d

sg24os4d1#

就像这样:

sed -i '' 's/PUT KEYWORDS HERE/my files 1000X with XYT of 20gt/' *.txt
huwehgph

huwehgph2#

不要尝试“就地”编辑文件。特别是如果您正在对许多文件进行批量修改。损坏和/或丢失数据的风险太大。将文件更改为新目录。例如,如果您的文件位于名为data的目录中:

$ mkdir new
$ for i in data/*; do sed -e '1s/.*/my files 1000X with XYT of 20gt/' "$i" > "new${i#data}"; done

在验证新数据(现在位于名为“new”的目录中)是您想要的数据之后,您可以删除旧数据(rm -rf data),如果需要保留原始路径,还可以删除mv new old
即使你没有对新数据进行严格的验证,这也比尝试就地编辑更安全。例如,如果过程进行到一半,你失去了电源,那么从哪里开始就很难了,因为你不容易知道哪些文件被更改了。创建一个新目录可以缓解这种问题。

相关问题