특정 확장자를 가진 파일을 ls 및 grep으로 나열합니다.

현재 디렉터리에서 파일만 가져오고 다른 파일은 출력하지 않고 .mp4 .mp3 .exe 파일만 출력하고 싶습니다. 그래서 그냥 이렇게 하면 된다고 생각했습니다:

ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$

하지만 첫 번째 grep은 mp4만 출력하므로 다른 두 개의 grep은 사용되지 않습니다.

어떤 아이디어 있으신가요? 추신, 이 스크립트를 Slow Leopard에서 실행 중입니다.

질문에 대한 의견 (3)
해결책

왜안돼요:

ls *.{mp3,exe,mp4}

39 m, 어디서 배운 i& I& # 39, ve been 이를 통해 it - 하지만 확실하지 않다.

해설 (7)

정규 표현식 사용할 수 있는 '찾기':

find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\n'

39 의 경우, re 파이핑이 you& 파일 이름:

find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\0' | xargs -0 dosomething

이렇게 하면 공백이 들어 있는 파일 또는 줄 바꿈.

OS X '찾기' 대체 '- e 옵션을 사용할 때' (고급) 만을 지원합니다.

find -E . -regex '.*\.(mp3|mp4|exe)'
해설 (4)

확장된 그렙인 egrep가 도움이 될 것입니다.

ls | egrep '\.mp4$|\.mp3$|\.exe$'

를 사용하면 됩니다.

해설 (4)

가장 쉬운 방법은 ls

ls *.mp4 *.mp3 *.exe
해설 (6)

만일에 대비하는거야: # 39 찾기 ',' t you 사용하여 don& 왜?

find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
해설 (1)

그렙 필요 없음. 이 전략은 와일드카드를 쉘로 할 것이다.

ls *.mp4 *.mp3 *.exe

실행할 경우

shopt -s nullglob

그럼 모두 탁월한 글롭 제거됨을 명령줄의 확장되지 않은 왼쪽 수 없습니다.

스케쳐내 대소문자를 구분하지 않는 글 로빙 (그러하매 *.mp3 foo 일치합니다. MP3):

shopt -s nocaseglob
해설 (2)
  • OSX 의 사용자 *:

Exe, mp3, mp4}, {사용하는 경우 'ls * 해당 오류를 발생시킬 것', 그 중 한 확장장치 주님으로부터그에게 결과를 얻을 수 있습니다.

. (Mp3 exe mp4) '' ls 사용하여 모든 파일을 반환되므로 일치하는 결과를 , * 0 의 경우에도 확장명은 확장명은 한 바 있다.

해설 (5)

여전히 찾고 있는 경우 대체 솔루션:

ls | grep -i -e '\\.tcl$' -e '\\.exe$' -e '\\.mp4$'

Feel free to ᅦ 플래그 필요할 경우 추가.

해설 (0)

'ls boot-r 핀스트 &quot .mp3"; '

ls - R ',' = &gt 서브디렉토리가 열거합니다 재귀적으로

해설 (0)
ls | grep "\.mp4$
\.mp3$
\.exe$"
해설 (2)

여기에 한 가지 예를 들어 있는 협력했습니다 for me.


find 
해설 (0)