我在c:\data\
中有3000个文件,我需要用文件名替换每个文件中的静态字符串。例如,在文件12345678.txt
中将有一些记录以及字符串99999999
,而我想用文件名99999999
替换12345678
。
如何使用批处理脚本执行此操作?
答案 0 :(得分:3)
尝试一下
replace_string="99999999"
for f in *.txt; do
sed -i "s/${replace_string}/${f%.*}/g" "$f";
done
说明:
for f in *.txt; do ... done
:循环浏览当前目录中名为*.txt
的文件。sed -i ... file
编辑file
就地(-i
)。"s/pattern/replacement/g"
替换(s
)模式,并在全球范围内{em>替换(g
)。${f%.*}
文件名,不带扩展名(via)答案 1 :(得分:0)
使用GNU工具:
find . -regex '.*/[0-9]+\.txt' -type f -exec gawk -i inplace '
BEGINFILE {f = FILENAME; sub(".*/", "", f); sub(/\..*/, "", f)}
{gsub(/\<99999999\>/, f); print}' {} +