0

多くのフォルダーを持つディレクトリがあり、各フォルダーには XML ファイルのリストが含まれています。ファイルを走査し、ファイルのサイズが 65Mb を超える場合にファイルの拡張子を「manual」に変更する bash スクリプトを作成しています。シェルスクリプトを書くのはこれが初めてで、ファイルをトラバースするためのコードを書くことはできましたが、名前の変更部分で苦労しています。

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

$fileの拡張子をからxmlに変更したい場合はmanual、代わりに

mv "$file" "${file%.xml}".manual
于 2012-10-05T16:14:00.287 に答える
1

あなたが抱えている困難とは、具体的にどのようなことですか?

ファイル名に空白がある場合は、試してください

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

*.manual複数のファイル名に展開すると、スクリプトが機能しないことに注意してください。

于 2012-10-05T16:12:34.990 に答える
0

これに関するスクリプトは必要ありません。 と の組み合わせでfindうまくxargsいくはずです。

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

-IXargsのほとんど使用されないオプション:

  1. 各入力を個別のコマンドとして実行し、
  2. ファイル名を置き換えることができるので、複数回使用でき、mv に最適です。
于 2012-10-05T16:14:41.923 に答える