사용하는 명령어에 recursive 옵션이 없을 때 전 주로 두가지 방법으로 사용 합니다.
[code:8oeupjbz]$ program **/*.jpg
혹은
$ find -name ‘*.jpg’ -print0 | xargs -0 program # 0 - 숫자 영 입니다.[/code:8oeupjbz]
첫번째 경우는 shopt -s를 실행 했을 때 globstar 옵션이 on으로 되어 있어야 합니다. 기본 쉘인 bash의 기능 입니다. 이 경우 파일 이름에 있는 공백이나 특수한 문자 예외 처리를 어떻게 해주는지 확실히 모르겠네요.
두번째 경우 find의 기본 동작이 현재 디렉토리 아래로 모든 파일 이름을 출력 합니다. 그래서 디렉토리 이름 표시는 생략하고 -name 옵션만 주었습니다.
파일 이름에 공백이나 특수 문자가 포함 된 경우 적절히 예외 처리를 해서 넘겨줘야 하는데 제가 아는 가장 안전한 방법이 NULL 문자로 구분해서 넘겨주는 방식 입니다.
-print0 옵션이 널 문자를 구분자로 이용하라는 의미 입니다. xargs의 -0 옵션 역시 들어오는 입력을 널 문자를 구분자로 해서 처리합니다.
[quote="마잇":3hcxunoy]사용하는 명령어에 recursive 옵션이 없을 때 전 주로 두가지 방법으로 사용 합니다.
[code:3hcxunoy]$ program **/*.jpg
혹은
$ find -name ‘*.jpg’ -print0 | xargs -0 program # 0 - 숫자 영 입니다.[/code:3hcxunoy]
첫번째 경우는 shopt -s를 실행 했을 때 globstar 옵션이 on으로 되어 있어야 합니다. 기본 쉘인 bash의 기능 입니다. 이 경우 파일 이름에 있는 공백이나 특수한 문자 예외 처리를 어떻게 해주는지 확실히 모르겠네요.
두번째 경우 find의 기본 동작이 현재 디렉토리 아래로 모든 파일 이름을 출력 합니다. 그래서 디렉토리 이름 표시는 생략하고 -name 옵션만 주었습니다.
파일 이름에 공백이나 특수 문자가 포함 된 경우 적절히 예외 처리를 해서 넘겨줘야 하는데 제가 아는 가장 안전한 방법이 NULL 문자로 구분해서 넘겨주는 방식 입니다.
-print0 옵션이 널 문자를 구분자로 이용하라는 의미 입니다. xargs의 -0 옵션 역시 들어오는 입력을 널 문자를 구분자로 해서 처리합니다.[/quote:3hcxunoy]
알려주셔서 감사합니다…
집에서 한 번 해 봐야 겠네요…(조금 어려워 보입니다…ㅠㅠ)
감사합니다.
[quote="oseb":3hcxunoy]옵션에 -u가 있네요
–recursivedir, -u Recursively include all files
해보니 하위 폴더들을 다 읽어주네요[/quote:3hcxunoy]
말씀하신대로 -u 옵션을 넣어서 해 봤는데…
전 왜…하위디렉토리에 있는 파일들을 읽지 못하는 것일까요???ㅠㅠ