programing

특정 확장자가 ls 및 grep인 파일 나열

newnotes 2023. 4. 20. 22:43
반응형

특정 확장자가 ls 및 grep인 파일 나열

현재 dir에서 파일을 가져오고 .mp4 .mp3 .exe 파일만 출력하고 싶습니다.그래서 난 그냥 이렇게 할 수 있을 줄 알았어.

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

그러나 첫 번째 GREP는 mp4만 출력하므로 나머지 2개의 GREP는 사용되지 않습니다.

좋은 생각 있어요?PS, 느린 표범에서 이 스크립트를 실행합니다.

안 되는 이유:

ls *.{mp3,exe,mp4}

어디서 배웠는지 모르겠지만 이걸 계속 쓰고 있어요.

egrep-- extended grep -- 여기서 도움이 됩니다.

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

그 일을 할 수 있을 거야

정규 표현 사용find:

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

파일명을 파이프로 접속하는 경우:

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

공백 또는 줄바꿈이 포함된 파일 이름을 보호합니다.

OS Xfind대체를 서포트하는 것은,-E(임의) 옵션이 사용됩니다.

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

가장 쉬운 방법은 ls를 사용하는 것입니다.

ls *.mp4 *.mp3 *.exe

GREP는 필요 없습니다.셸 와일드카드가 효과가 있습니다.

ls *.mp4 *.mp3 *.exe

도망쳤다면

shopt -s nullglob

일치하지 않는 글로브는 모두 제거되고 명령줄에 전개되지 않은 상태로 남아 있지 않습니다.

대소문자를 구분하지 않는 글로벌(*.mp3는 foo와 일치합니다)MP3):

shopt -s nocaseglob

만약을 위해: 이 웹 사이트를find?

find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'

OSX 사용자의 경우:

사용하시는 경우ls *.{mp3,exe,mp4}이러한 확장 중 하나가 결과가 없으면 오류가 발생합니다.

사용.ls *.(mp3|exe|mp4)확장자하나의 결과가 0인 경우에도 해당 확장자와 일치하는 모든 파일을 반환합니다.

아직 대체 솔루션을 찾고 있는 경우:

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

필요한 경우 -e 플래그를 추가해도 됩니다.

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

ls -R | findstr ".mp3"

ls -R=>는 하위 디렉토리를 재귀적으로 나열합니다.

다음 명령어를 쉽게 사용할 수 있습니다.

ls | grep \.txt$ && ls | grep \.exe

여기 나에게 효과가 있었던 한 가지 예가 있다.

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

반응형