0

我有一个包含许多文件夹的目录,每个文件夹都包含一个 XML 文件列表。如果文件大小大于 65Mb,我正在编写一个遍历文件并将文件的扩展名重命名为“手动”的 bash 脚本。这是我第一次编写 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
4

3 回答 3

1

你到底遇到了什么困难

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

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

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

于 2012-10-05T16:12:34.990 回答
1
mv *.manual `basename $file`.xml

如果要更改$filefrom的扩展名xmlto manual,请改为

mv "$file" "${file%.xml}".manual
于 2012-10-05T16:14:00.287 回答
0

不需要为此编写脚本,结合findxargs应该可以解决问题:

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

-IXargs很少使用的选项:

  1. 将每个输入作为单独的命令运行,并且
  2. 允许您替换文件名,因此您可以多次使用它,非常适合 mv
于 2012-10-05T16:14:41.923 回答