파일의 갯수가 넘으많으면 shell에서 와일드카드(*, ?)를 쓸 수 없게 된다.
인수 명단이 너무 길다는 에러를 내기 때문인데.
이 때는 파일 목록을 만들어서 xargs 등으로 처리해야 한다.
예1) 파일의 모든 내용을 하나의 파일로 합치기
ls | xargs cat > 합쳐진 파일명
예2) 파일 목록 얻은 후 필요한 파일만 하나의 파일로 합치기
ls > file_list.txt
file_list.txt 중 필요한 내용을 적절히 편집한 후.
cat file_list.txt | xargs cat > 합쳐진 파일명
예3) 하위 디렉토리의 모든 파일의 압축을 풀고 grep 사용해서 필요한 내용만 보기
$ time sh -c "find ./2004* -name *.html_info.gz | xargs zcat | grep \"^url:\" | wc"
댓글 없음:
댓글 쓰기