簡體   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