我有一个目录,其中包含许多文件夹,每个文件夹都包含一个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
答案 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)
不需要有关于此的脚本,find
和xargs
的组合应该可以解决问题:
find . -size +65M | xargs -IQ mv Q Q.manual
Xargs的小用-I
选项: