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

时间:2012-10-05 16:08:02

标签: linux bash shell

我有一个目录,其中包含许多文件夹,每个文件夹都包含一个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

3 个答案:

答案 0 :(得分:1)

你所拥有的难度究竟是什么?

如果文件名中有空格,请尝试

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

请注意,如果*.manual扩展为多个文件名,您的脚本将无效。

答案 1 :(得分:1)

mv *.manual `basename $file`.xml

如果您想将$file的扩展名从xml更改为manual,请改为

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

答案 2 :(得分:0)

不需要有关于此的脚本,findxargs的组合应该可以解决问题:

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

Xargs的小用-I选项:

  1. 将每个输入作为单独的命令运行,
  2. 允许您替换文件名,因此您可以多次使用它,非常适合mv