繁体   English   中英

使用从文件文本中提取的变量批量重命名文件

[英]Batch renaming files using variable extracted from file text

很抱歉,如果这个问题得到了回答,但我已经花了几个小时进行试验并在线搜索解决方案。

我有一个包含数千个文本文件的文件夹,例如“1.dat”、“2.dat”、3.dat“等。我想通过从文件中提取一个 8 位数字 ID 来重命名所有文件文本(ID 始终位于第 65-73 列的最后一行),因此“1.dat”变为“60741308.dat”等。

我已经做到了从文本文件中提取 ID(使用尾部和剪切)并将其分配给一个变量,然后我可以使用该变量在单个文件上重命名文件,但我无法使其工作作为“for”循环中的批处理。

这是我尝试过的:

for i in *.dat
tmpname=$(tail -1 $i| cut -c 65-73) 
mv $i $tmpname.dat
done

我收到以下错误:bash:意外标记附近的语法错误 `tmpname=$(tail -1 $i| cut -c 65-73)'

非常感谢任何帮助。

Bash 中 for 循环的语法是:

for i in {1..10}
do
  echo $i
done

我可以看到,您的示例中缺少do关键字。 所以,正确的版本是:

for i in *.dat
do
  tmpname=$(tail -1 "$i" | cut -c 65-73) 
  mv "$i" "$tmpname.dat"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM