2016-10-15 5 views
0

한 폴더에는 MR000001, MR000002 등과 같이 MR000070까지 여러 파일이 있습니다. 나는 그러한 파일들을 가진 많은 폴더들을 가지고있다. 모든 파일을 하나의 폴더에 복사하고 번호가 계속 증가하도록 이름을 바꾸고 싶습니다. 예를 들어, 70의 두 번째 배치를 복사 할 때 파일 이름을 71에서 시작하여 140으로 바꾸려면 파일 이름을 바꾸고 싶습니다. 세 번째 배치를 복사 할 때, 나는 그들의 이름을 141에서 시작하여 210로 이동시키고 싶습니다. 어떻게 bash 스크립트로이 작업을 수행 할 수 있습니까? 지금까지, 나는이 있습니다번호가 매겨진 파일 이름으로 bash에서 파일 이름 바꾸기

for f in MR0000*; 
do 
    cp "$f" ""; 
done 

나는 내가 원하는 것을 달성하기 위해 뭔가 빈 따옴표를 입력 할 수 있어야한다고 생각하지만, 내가 무엇을 알고하지 않습니다.

+0

또한'의 printf -v'를 사용하고 숫자의 일련 번호에 숫자 패드가 파일 이름을 생성하기 위해'printf' 형식 문자열을 활용할 수 있습니다. 예 : '선언 -i cnt = 0; 내가 경로에/to/files/*; do printf -v newname "MR % 5d" "$ cnt"; mv "$ i" "$ newname"; $ ((cnt ++)); 완료 ' –

답변

0

한 가지 방법 :

dst_dir=where/you/want/these/files/to/end/up/ 
dst_filenumber=0 
for src_dir in where/they/are/now/1 where/they/are/now/2 ; do 
    for src_filepath in "$src_dir"/MR0000* ; do 
    ((dst_filenumber++)) 
    dst_filename="$(printf MR%06d "$dst_filenumber")" 
    cp "$src_filepath" "$dst_dir/$dst_filename" 
    done 
done