異なるディレクトリからコピーするファイルは複数ありますが、各ファイルの名前は同じであるため、そのファイルをディレクトリにコピーしてから、各ファイルの名前を「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ファイルを見つけます。