指定されたディレクトリ内のファイルを繰り返し、ファイルが存在するかどうかを確認するには?

指定されたディレクトリ内のファイルを繰り返し、ファイルが存在するかどうかを確認するには?

これは特定のディレクトリにあるファイルのリストです。

a_object_1.0.zip
file_name_conf_1.1.zip
anim_dup_1.1.zip

指定されたディレクトリ内のファイルを繰り返し、ファイルがファイルリストのファイルパターンと一致することを確認し、解凍し、各ファイルの名前を特定のプレフィックス(cx_a_object_1.0.zip, cx_file_name_conf_1.1.zip, anim_anim_dup_1.1.zip)に変更します。

答え1

#!/bin/bash
for szFile in /var/tmp/*.zip;
do 
  unzip "$szFile";
  mv "$szFile" "Prefix_"$(basename -- "$szFile")
done

する:

  • zipすべてのファイルを繰り返す/var/tmp
  • 抽出してください
  • プレフィックスの追加
  • 現在のディレクトリに移動します。

答え2

以下はfindを使った例です。

find somedir/ -type f -name 'some.zip' -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;

echo結果が満足であれば削除してください。

または、ローカルパラメータを持つ関数を作成し、次のようにファイル名を関数にパラメータとして渡します。

cfind() {
 local name=$1
 find somedir/ -type f -name "$name" -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;
    }

呼ぶ

cfind myfilename.zip

関連情報