gpt4 book ai didi

linux - shell脚本修改同一目录下多个文件的文件名变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:23 27 4
gpt4 key购买 nike

我在一个目录中有多个文件,例如:

a01.txt
a02.txt
a03.txt
etc...

目录下所有文本文件的第3行如下:

consumer[location].userid= constant

我想在每个文件的第三行中用不带扩展名的相应文件名替换“位置”一词,例如:as

consumer[a01].userid= constant    --------- for a01.txt
consumer[a02].userid= constant --------- for a03.txt
etc

你能帮忙吗?

最佳答案

因此,从头开始:您想替换文件特定行中的单词(位置)。Google 说,sed 可以做到这一点:

sed -i "3s/location/foo/" file.ext

将替换文件“file.ext”第三行中第一次出现的“location”

要替换位置的字符串应该是不带扩展名的文件名。由于您知道扩展名,因此 basename 应该可以正常工作:

basename /path/to/file.ext .ext

将返回"file"。

现在遍历目录中的所有txt文件:

for filename in directory/*.txt; do
# Do stuff
done

组合这些命令会产生如下简短的脚本:

#!/bin/bash
# Assumes the script is located in the data directory
for filename in ./*.txt; do
name=$(basename $filename .txt)
echo "$filename -> $name"
sed -i "3s/location/$name/" $filename
done

关于linux - shell脚本修改同一目录下多个文件的文件名变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com