이름을 바꿀 때 다른 디렉터리에서 여러 파일을 복사하시겠습니까?

이름을 바꿀 때 다른 디렉터리에서 여러 파일을 복사하시겠습니까?

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

관련 정보