用文件名替换文件中的静态字符串的批处理脚本

时间:2018-08-30 13:50:33

标签: batch-file filenames text-processing

我在c:\data\中有3000个文件,我需要用文件名替换每个文件中的静态字符串。例如,在文件12345678.txt中将有一些记录以及字符串99999999,而我想用文件名99999999替换12345678

如何使用批处理脚本执行此操作?

2 个答案:

答案 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}' {} +