특정 확장자가 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
'programing' 카테고리의 다른 글
| SQL Server PRINT SELECT (선택한 쿼리 결과를 인쇄하시겠습니까?) (0) | 2023.04.20 |
|---|---|
| Azure App Services에서 스케일아웃은 어떻게 작동합니까? (0) | 2023.04.20 |
| ClosedX를 사용한 Excel 파일 읽기ML (0) | 2023.04.20 |
| 이 주의를 수정하기 위해 github 워크플로우 작업에 대한 파일을 아티팩트에 아카이브하는 방법은 무엇입니까? (0) | 2023.04.20 |
| SQL에서 all union과 order by를 사용하는 방법은 무엇입니까? (0) | 2023.04.20 |