파일 목록 복사

파일 목록 복사

다른 디렉토리에 복사해야 하는 많은 수의 파일이 있는 디렉토리가 있습니다. 모든 파일을 복사할 필요는 없으며 일부 파일만 복사해야 한다는 점을 기억하십시오. 필요한 모든 파일을 하나씩 실행하는 대신 한 디렉터리에서 다른 디렉터리로 복사하는 스크립트를 만들 수 있는 방법이 있습니까?

답변1

cpuser79914의 응답에 대한 귀하의 의견을 고려하면 일반 이전 명령에서 복사하려는 파일을 명시적으로 나열 해야 하는 것처럼 들립니다 . 다음과 같은 작업이 수행되어야 합니다.

cp FILE_1 FILE_2 FILE_3 /destination/directory

예를 들어 복사 작업을 여러 번 수행하는 경우 다음과 같이 수행할 수 있습니다.

for FILE in $(cat ./list_of_files.txt)
do
    cp ${FILE} /destination/directory
done

이 예에서는 필요한 파일 목록을 텍스트 파일에 추가했다고 가정합니다 list_of_files.txt. 이 방법의 이점은 list_of_files.txt특히 복사를 여러 번 수행해야 하는 경우 파일 에 복사해야 하는 새 파일을 추가할 수 있다는 것입니다 .

더 많은 예를 보려면 다음 링크를 확인하세요.

https://www.cyberciti.biz/faq/bash-for-loop/

답변2

가장 간단한 방법에는 스크립팅 기술이 필요하지 않습니다. 필요한 것은 텍스트 편집기뿐입니다. 물론 이 작업을 수행하는 더 우아하고 일반적인 방법이 있지만 때로는 스크립팅 기술이 초보자 수준인 경우 막대한 학습 곡선 상승 등을 거치지 않고 우회할 필요 없이 즉각적인 작업을 완료하고 싶을 수도 있습니다.

myfiles.txt복사하려는 각 파일 이름 목록이 한 줄에 하나씩 포함되어 있는 파일이 있다고 가정합니다 . 나는 다음과 같이 가정한다:

  • 목록에 1백만 개 미만의 파일이 있습니다.
  • 각 줄에는 myfiles.txt해당 소스 파일의 올바른 경로와 파일 이름이 포함되어 있습니다.
  • 파일을 복사하려는 디렉터리 경로가 test이고 이미 존재합니다.
  • 파일 이름에 따옴표, 아포스트로피, 줄바꿈 등 문제가 되는 문자가 없어야 합니다.

이제 다음과 같이 말하세요.

vi myfiles.txt
:%s/^/cp -vp '/
:%s-$-' test/-
ZZ

cp -vp '그러면 각 줄의 시작 부분(각 파일 이름)과 ' test/각 파일 이름의 끝 부분 에 배치될 파일 목록이 편집됩니다 .

cp이제 N개의 파일을 디렉터리에 복사하는 N개의 명령 목록이 생겼습니다 test/. 다음과 같이 실행할 수 있습니다.

sh < myfiles.txt

바라보다.

답변3

파일 이름이 비슷한 경우 와일드카드를 사용할 수 있습니다. 예를 들어 cp test* ~/test/'test'로 시작하는 모든 파일을 ~/test 디렉터리에 복사합니다.

디렉토리에 보이는(점이 아닌) 파일을 복사하려면 cp ./* ~/test/이렇게 하면 됩니다.

관련 정보