터미널에서 하위디렉토리들에 잇는 파일들을 모두 선택할 수 있을까요?

안녕하세요…

제가 너무 초보인지라…
엉뚱한 질문이 될지 몰라서 먼저 사과드립니다…

제가 요즘 사용하는 그림보기 프로그램은 qiv입니다.

터미널용 프로그램인데…

최고의 장점은 진짜 빠르다…
저에게 있어 단점은 터미널에서 명령어를 입력해 줘야 한다.입니다…

qiv를 이용하여 디렉토리에 있는 jpg파일을 슬라이드 쇼로 보고 싶다.

라고 하면 그 디렉토리에서
qiv -s *.jpg

라고 하면 되는데요…

그 디렉토리 의 하위디렉토리들…(하나의 하위디렉토리만 있는 것이 아닌 여러개의 하위디렉토리가 있는 경우)
속에 있는 jpg파일들도 슬라이드쇼로 보고 싶습니다…

그러려먼 저기 있는 *.jpg 를 어떤 식으로 바꾸면 하위 디렉토리에 있는 jpg파일들을 모두 선택해서 슬라이드쇼로 불러올 수 있을까요??

가르쳐 주세요…

감사합니다.

옵션에 -u가 있네요
–recursivedir, -u Recursively include all files
해보니 하위 폴더들을 다 읽어주네요

qiv는 imlib를 사용하는데, 이걸 glib로 바꾼게 pqiv에요.

[quote="oseb":1asg6x4b]옵션에 -u가 있네요
–recursivedir, -u Recursively include all files
해보니 하위 폴더들을 다 읽어주네요[/quote:1asg6x4b]

감사합니다…분명 man 페이지를 읽었는데…
왜 제 눈에는 안 보였을까요?
영어가 짧아서 그런가??

감사합니다…^^

[quote="protochaos":1asg6x4b]qiv는 imlib를 사용하는데, 이걸 glib로 바꾼게 pqiv에요.[/quote:1asg6x4b]

아.pqiv라는 것도 찾을 때 있기는 하던데…
이것도 터미널에서 명령어 입력하야 했던 거 같아서…
입력해야 하는 글자를 한글자라도 줄여보자…라고 해서 qiv를 사용하고 있는 건데…ㅠㅠ

차이가 무얼까요??

pqiv를 사용하는 것이 더 나은 선택일까요??

사용하는 명령어에 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 옵션을 넣어서 해 봤는데…
전 왜…하위디렉토리에 있는 파일들을 읽지 못하는 것일까요???ㅠㅠ

제가 사용한 명령어는

[code:3hcxunoy]qiv -fitsSd 5 *.jpg[/code:3hcxunoy]

입니다…

슬라이드쇼를 (s)
풀스크린으로 실행 (f)해서

그림파일이 너무크면 화면에 크기를 맞추고 (t)
그림순서는 random (S)
상태바(bar)는 숨기면서 (i)

하나의 그림은 5초동안 보여줘라 (d 5)

이죠…

잘 됩니다…

그래서 이번에는 저 명령어에 u옵션을 넣었습니다…

[code:3hcxunoy]qiv -fitusSd 5 *.jpg[/code:3hcxunoy]

이렇게요…

하지만 다른 분들은 하위디렉토리의 그림파일도 읽어준다던 u옵션을 집어 넣어도 아무런 변화가 없더라구요…(하위디렉토리에 있는 그림파일은 슬라이드 쇼에 나타나지 않습니다…물론 하위디렉토리로 경로를 옮겨서 qiv를 사용하면 그 디렉토리에 있는 그림파일은 잘 나오구요…)

혹시 u옵션은 다른 형식으로 사용해야 하는 것을까요???

가르쳐 주세요…

감사합니다.

qiv를 좀 써보니까 기본적으로 파일이름 뿐만 아니라 디렉토리 이름을 입력으로 받네요.

[code:1983jbgu]qiv .[/code:1983jbgu]
이렇게 하면 현재 디렉토리에 있는 그림 파일을 모두 보여 줍니다. 이와 동시에 -u 옵션을 주면 하위 디렉토리까지 모두 뒤져서 보여 줍니다.

기본적으로 보여주는 그림 파일 확장자가 다음과 같이 나옵니다.

[code:1983jbgu]Valid image extensions:
Use --no_filter/-n to disable
.jpg .jpeg .jpe .gif .tif .tiff .xpm .png
.pjpeg .ppm .pnm .pgm .pbm .pcx .bmp .eim
.ico .wmf .svg[/code:1983jbgu]

근데 이중에 만약 jpg 확장자만 보고 싶다고 하면 이건 qiv에서 직접적으로 지원하지 않는 것 같습니다.

[code:1983jbgu]qiv **/*.jpg[/code:1983jbgu]
이렇게 해보시기 바랍니다.

[code:2vlup2v1]qiv -fitusSd 5 *.jpg[/code:2vlup2v1]

저기서 *.jpg가 잘못된 거 였던 듯 합니다…

[code:2vlup2v1]qiv -fitusSd 5 . [/code:2vlup2v1]

이렇게 하니…원하는대로 하위디렉토리에 있는 그림파일까지 모두 나옵니다…

뭐…그중에 굳이 jpg만 보겠다.??

이건 애초의 목표가 아니었으니…

잠시 뒤로 미뤄보려고 합니다…

일단 해결!!! ^^

그리고 qiv가 움직이는 gif파일은 지원을 안 하는 듯 합니다…(나오기는 하는데 그림이 움직이지 않고 정지그림만 보이네요…)

또 하나…qiv가 아무리 빨라도 그림파일 갯수가 많아지니…슬라이드쇼 시작에 걸리는 시간이 아무래도 늦어지기는 하네요…(하지만 다른 그림보기 프로그램들에 비하면 정말 고속입니다…)