내가 알고 있는 내용으로 끝나는 파일을 원할 경우 .fas
다음 명령을 사용하면 됩니다 ls
.
ls -l /users/jenna/bio/*.fas
이것은 로 끝나는 모든 파일을 나열합니다 . 그러나 또는로 끝나는 파일을 .fas
어떻게 얻을 수 있습니까 ?.fas
.pep
ls -l /users/jenna/bio/(*.fas | *.pep)
작동하지 않는 것 같나요? 이 작업을 수행할 수 있는 다른 명령이 있다는 것을 알고 있지만 이를 작동시킬 수 있는 방법이 있습니까 ls
?
도와주셔서 감사합니다!
답변1
이것을 사용하십시오 :
ls -l /users/jenna/bio/*.{fas,pep}
아니면 이거:
find /users/jenna/bio -iname '*.pep' -or -iname '*.fas'
답변2
기본적으로 작동할 가능성이 가장 높은 것은 다음과 같습니다.버팀대 확장. bash, zsh 및 ksh와 함께 작동합니다.
ls -l /users/jenna/bio/*.{fas,pep}
(중괄호 주위에는 공백이 없습니다.)
Bash 및 ksh에서는 확장자 중 하나가 일치하지 않으면 오류가 표시되지만 다른 확장자와 일치하는 파일은 계속 나열됩니다. 그 이유는 중괄호 확장이 와일드카드 일치 기능이 아니라 텍스트 대체: 쉘이 패턴과 일치하는 파일 찾기를 시작하기 전에로 변환되기 때문입니다 *.{fas,pep}
. *.fas *.pep
zsh에서는 오류가 발생하고 명령이 실행되지 않지만 더 나은 방법이 있습니다: "또는"글로벌 모드. 일치하는 확장자가 없으면 오류가 발생하지 않습니다.
ls -l /users/jenna/bio/*.(fas|pep)
아니면 패턴을 사용할 수도 있습니다다른 구문: @(…|…)
;Bash에서는 활성화 구문을 사용해야 하고 shopt -s extglob
, zsh에서는 활성화 구문을 사용해야 합니다 setopt ksh_glob
.
ls -l /users/jenna/bio/*.@(fas|pep)
(이 동작 중 일부는 구성 가능합니다. 명시적으로 지정하지 않는 한 모든 설명은 셸의 기본 구성에 적용됩니다.)
답변3
find
일반적으로 또는에서 발생하는 성가신 오류 없이 반복적으로 스캔하려는 경우 ls
(예: "허가가 거부되었습니다","디렉토리가 아님")는 스크립트나 xargs
명령을 차단할 수 있으며 tree
해당 명령은 여기서 언급되지 않습니다.
tree -fai / | grep -e ".fas$" -e ".pep$"
위에서는 root 를 사용했지만 /
어떤 경로든 가능합니다.
tree -fai /users/jenna/bio/ | grep -e ".fas$" -e ".pep$""
그런데