ls 및 grep을 사용하여 특정 확장자를 가진 파일 나열
방금 현재 디렉토리에서 파일을 가져오고 .mp4 .mp3 .exe 파일 만 출력합니다. 그래서 나는 이것을 할 수 있다고 생각했습니다.
ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$
그러나 첫 번째 grep은 mp4를 출력하므로 다른 2 grep은 사용되지 않습니다.
어떤 아이디어? 추신 : Slow Leopard에서이 스크립트 실행
왜 안되 겠어요 :
ls *.{mp3,exe,mp4}
어디서 배웠는지 잘 모르겠지만 이것을 사용하고 있습니다.
다음과 함께 정규식을 사용하십시오 find
.
find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\n'
파일 이름을 파이핑하는 경우 :
find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\0' | xargs -0 dosomething
공백이나 줄 바꿈이 포함 된 파일 이름을 보호합니다.
OS X find
은 -E
(향상된) 옵션이 사용될 때 교대 만 지원합니다 .
find -E . -regex '.*\.(mp3|mp4|exe)'
egrep
-확장 된 grep-여기서 도움이 될 것입니다
ls | egrep '\.mp4$|\.mp3$|\.exe$'
일을해야합니다.
가장 쉬운 방법은 ls를 사용하는 것입니다.
ls *.mp4 *.mp3 *.exe
만일을 위해 : 왜 사용하지 find
않습니까?
find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
grep 필요가 없습니다. 쉘 와일드 카드가 트릭을 수행합니다.
ls *.mp4 *.mp3 *.exe
당신이 실행 한 경우
shopt -s nullglob
일치하지 않는 글롭은 모두 제거되며 확장되지 않은 명령 행에 남아 있지 않습니다.
대소 문자를 구분하지 않는 글 로빙을 원할 경우 * .mp3는 foo.MP3와 일치합니다.
shopt -s nocaseglob
여전히 대체 솔루션을 찾고있는 경우 :
ls | grep -i -e '\\.tcl$' -e '\\.exe$' -e '\\.mp4$'
필요한 경우 더 많은 -e 플래그를 추가하십시오.
OSX 사용자의 경우 :
당신이 사용하는 경우 ls *.{mp3,exe,mp4}
, 그것은 오류가 발생합니다 그 확장 기능 중 하나가 아무런 결과가없는 경우.
를 사용 ls *.(mp3|exe|mp4)
하면 확장자 중 하나에 0 개의 결과가 있더라도 해당 확장자와 일치하는 모든 파일이 반환 됩니다 .
ls | grep "\.mp4$
\.mp3$
\.exe$"
ls -R | findstr ".mp3"
ls -R
=> 하위 디렉토리를 재귀 적으로 나열
나를 위해 일한 한 가지 예가 있습니다.
find <mainfolder path> -name '*myfiles.java' | xargs -n 1 basename
참고 URL : https://stackoverflow.com/questions/1447625/list-files-with-certain-extensions-with-ls-and-grep
'development' 카테고리의 다른 글
Xcode 단위 테스트에서 @testable을 사용할 때 "해당 모듈 없음" (0) | 2020.06.25 |
---|---|
"코드 실행이 중지되었습니다"라는 메시지와 함께 Excel VBA 앱이 자연스럽게 중지됨 (0) | 2020.06.25 |
Amazon S3 버킷을 어떻게 검색합니까? (0) | 2020.06.25 |
CSS 미디어 쿼리를 사용하여 장치 방향을 감지하는 방법은 무엇입니까? (0) | 2020.06.25 |
객체의 정규화되지 않은 (짧은) 클래스 이름을 어떻게 얻습니까? (0) | 2020.06.25 |