bash script2020. 12. 2. 15:28

 

반달가면 이글루에서 백업 - bahndal.egloos.com/465115

 

조건에 맞는 파일을 찾아 특정 디렉토리로 복사를 하고 싶을 경우, find와 cp 명령을 xargs 명령으로 연결하면 되겠다.

파일을 찾기 위한 find 명령에 대한 내용은 이전 게시물을 참고하자.

 

우선 홈디렉토리(~/)에서 확장자가 txt인 파일을 찾는 예시를 보자.

 

find ~/ -type f | grep "\.txt$"

 

자, 이 결과를 가져와서 cp 명령을 실행해야 한다. 앞에 실행한 명령의 결과를 뒤에 실행할 명령의 인자(argument)로 넘겨주는 xargs 명령을 이용하는데, 한가지 유의할 점이 있다. 아래의 예시를 보자.

# txt 파일을 찾아 ~/Documents 디렉토리로 복사 (잘못된 시도)

find ~/ -type f | grep "\.txt$" | xargs cp ~/Documents

# 실패!

 

위와 같이 하면 제대로 복사가 되지 않는다. cp 명령에서 복사하려는 목적지 디렉토리와 앞의 find 명령에서 넘어온 파일 목록이 혼동되지 않도록 반드시 -t 옵션을 사용해야 한다. 제대로 된 예시는 아래와 같다.

 

# txt 파일을 찾아 ~/Documents 디렉토리로 복사(성공)

find ~/ -type f | grep "\.txt$" | xargs cp -t ~/Documents

 

728x90
Posted by 반달가면