반달가면 이글루에서 백업 - 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
'bash script' 카테고리의 다른 글
[bash: mv, rename] 파일/디렉토리 이름 바꾸기 (한개 또는 여러개 한꺼번에) (0) | 2020.12.23 |
---|---|
[bash: echo] 탭(tab) 출력할 때 따옴표(")의 중요성 (0) | 2020.12.16 |
[bash: split, cat] 파일 분할/재조립 (0) | 2020.11.26 |
[bash: for, sed, seq] 파일에서 홀수번째/짝수번째 행만 골라내기 (0) | 2020.11.24 |
[bash: grep] 정확히 일치하는 문자열 찾기 (0) | 2020.11.16 |