繁体   English   中英

使用bash脚本重命名xml文件扩展名

[英]Renaming xml file extension using bash script

我有一个目录,其中包含许多文件夹,每个文件夹都包含一个XML文件列表。 我正在编写一个遍历文件的bash脚本,如果文件大小超过65Mb,则将文件的扩展名重命名为“manual”。 这是我第一次编写shell脚本,我能够编写遍历文件的代码,但我在重命名部分遇到了困难。

for file in $dir
do
   size=$(stat -c%s "$file")
   if test "$size" -gt "68157440"; then
      echo "Before Renaming...."
      echo $file
      echo "After renaming"
      mv *.manual `basename $file`.xml
      echo $file
   else 
      echo $file >> outlog.log
   fi
done

$ file的一个例子是,

/apps/jAS/dev/products-app/BConverter/data/supplier-data/TF/output/Fiber Optics and Fiber Management Solutions/Fiber Optic Cable Assemblies.xml

遇到的困难究竟是什么?

如果它是文件名中的空格,请尝试

mv *.manual `basename "$file"`.xml

请注意,如果*.manual扩展为多个文件名,则脚本将不起作用。

mv *.manual `basename $file`.xml

如果要将$file的扩展名从xml更改为manual ,请执行此操作

mv "$file" "${file%.xml}".manual

不需要脚本, findxargs组合应该可以解决问题:

find . -size +65M  | xargs -IQ mv Q Q.manual

Xargs的一个很少使用的-I选项:

  1. 将每个输入作为单独的命令运行,并且
  2. 让你替换文件名,这样你可以多次使用它,非常适合mv

暂无
暂无

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

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