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.txt
xargs
읽으라고 지시합니다abc.txt
(평소처럼 stdin에서 읽는 대신).-i
xargs
한 줄의 입력으로 바꾸 라고 지시합니다.{}
테스트해보세요:
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로 읽어온 다음 이 새 이름을 사용하여 이전 파일을 새 위치에 복사하는 것입니다.