名前を変更するときに別のディレクトリから複数のファイルをコピーしますか?

名前を変更するときに別のディレクトリから複数のファイルをコピーしますか?

異なるディレクトリからコピーするファイルは複数ありますが、各ファイルの名前は同じであるため、そのファイルをディレクトリにコピーしてから、各ファイルの名前を「expect1、expect2、expect3」などに変更する必要があります。これまで試したコードは次のとおりです。

     let i=1; for file in delay* ; do (
     cd $file
     cp expectation_file ~/target_dir
     cd ~/target_dir/
     mv expectation_file expect{i}
     ((i++)) );
     done

しかし、これは "expect1"という名前のすべてのファイルを作成するだけです。誰でも助けることができますか?計算ループが間違っているように見えません。ありがとうございます!

編集:コードに間違いがありました。 i = 1の代わりに1 = 1があり、i ++の代わりに++ iがあります。

ベストアンサー1

これがより一般的かもしれません。

#!/bin/bash
i=0
source_files=$(find /tmp -name "*.zip")
target_dir=~/temp1/
for source in ${source_files}; do
  ((i++))
  mv ${source} ${target_dir}/$(basename ${source})${i}
done

source_files 式は $(ls *.zip) と同じです。この例では、/tmp/の下にあるすべてのzipファイルを見つけます。

おすすめ記事