파일 복사, 미리 정의된 파일 이름 목록을 사용하여 다른 디렉터리에 복사본 만들기

파일 복사, 미리 정의된 파일 이름 목록을 사용하여 다른 디렉터리에 복사본 만들기

rock.mpg 폴더 디렉토리에 파일이 있습니다 /folder1/folder2. 이 파일의 여러(340) 복사본을 서로 다른 디렉터리에 /folder1/folder2/folder3서로 다른 고유한 파일 이름으로 만들어야 합니다 .

340개의 중복 사본의 고유 이름은 무작위이며 연속적이지 않습니다. 그것들은 abc.txt내가 가지고 있는 별도의 텍스트 파일에 이미 정의되어 있습니다 .

중복된 파일 이름의 예 abc.txt는 다음과 같습니다

MS123.mpg
DW235.mpg
WQ6748.mpg
HDJ74.mpg
...
...

쉘 스크립트를 사용하여 이를 달성할 수 있습니까?

답변1

상당히 쉬울 것입니다 xargs:

xargs -a abc.txt -i cp /folder1/folder2/rock.mpg /folder1/folder2/folder3/{}
  • -a abc.txtxargs읽으라고 지시합니다 abc.txt(평소처럼 stdin에서 읽는 대신).
  • -ixargs한 줄의 입력으로 바꾸 라고 지시합니다.{}

테스트해보세요:

xargs -a abc.txt -i echo cp /folder1/folder2/rock.mpg /folder1/folder2/folder3/{}

답변2

BASH만 사용:

while read newname ; do
    cp old/dir/rock.mpg /new/dir/"$newname"
done < abc.txt

한 줄에서도:

while read newname ; do ; cp old/dir/rock.mpg /new/dir/"$newname" ; done < abc.txt

메커니즘은 abc.txt의 각 행을 변수 newdir로 읽어온 다음 이 새 이름을 사용하여 이전 파일을 새 위치에 복사하는 것입니다.

관련 정보