Shell脚本用于修改同一目录中多个文件的文件名的变量

时间:2018-03-04 16:46:29

标签: linux bash shell scripting sh

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

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

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

consumer[location].userid= constant

我想替换" location"在每个文件的第三行中使用相应的文件名而不带扩展名,例如:as

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

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

Cats

将取代第一次出现" location"在文件的第三行" file.ext"

要替换位置的字符串应该是没有扩展名的文件名。 既然您知道扩展名,那么basename应该可以正常工作:

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

将返回"文件"。

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

basename /path/to/file.ext .ext

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

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