서로 다른 디렉터리에서 복사할 파일이 여러 개 있지만 각 파일의 이름이 동일하므로 해당 파일을 디렉터리에 복사한 다음 각 파일의 이름을 차례로 "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 파일을 찾습니다.