답변:
이것은 실제로 셸이 아닌 셸에서 수행합니다 ls
.
에서 bash
다음을 사용합니다.
shopt -s nocaseglob
그리고 다음 명령을 실행합니다.
또는 zsh
:
unsetopt CASE_GLOB
또는 야쉬에서 :
set +o case-glob
그리고 당신의 명령.
이를 각각 .bashrc
, .zshrc
또는 에 넣을 수 있습니다 .yashrc
.
또는 zsh를 사용하여 :
setopt extendedglob
ls -d -- (#i)*abc*
(즉, 와일드 카드별로 대소 문자를 구분하지 않는 대소 문자 구분)
ksh93으로 :
ls -d -- ~(i:*abc*)
모든 파일 이 쉘 에 의해 전달되므로 globbing 이 아닌 다른 방식으로 작동하기를 원합니다 .ls
ls
shopt -s
; 설정 을 해제 하려면을 사용 shopt -u
합니다. 또는 ( )
설정이 부모 셸에 영향을 미치지 않도록 사용 하여 하위 셸의 모든 내용을 래핑 할 수 있습니다 (shopt -s nocaseglob ; ls *abc*)
.
[aA][bB][cC]
) 이식 가능한 방법이 없습니까?
shopt
지난 15 년 동안 bash를 사용하여 명령을 보지 못했다고 믿을 수 없다 !
polemon이 설명했듯이 *abc*
파일 목록으로 확장되는 쉘은 ls가 아닙니다 . 이것을 패턴 일치 라고 합니다.
대소 문자를 무시하도록 전체 패턴 일치 동작을 변경하는 것 외에도. 이외의 다른 패턴 일치를 사용할 수 있습니다 *
. 다음은 bash에서 원하는 것을 수행합니다.
ls *[aA][bB][cC]*
bash man에서 :
[...] 동봉 된 문자 중 하나와 일치합니다.
이것은 당신이 사용할 수있는 더 미세한 입자 일치 수 *[aA][bB]c*
에 맞게 abc
또는 ABc
아닌 abC
이상 ABC
. 또는 e
캐릭터의 모든 인스턴스와 일치시킬 수있는 프랑스어의 예 :
ls *[eéèêëEÉÈÊË]*
[...]
많은 경우에 유용 할 수 있으며 언급 할 가치가 있습니다.
[[=e=][=E=]]
.
-i
(--ignore-case) 옵션을 추가 grep
하여 아래 출력을 얻을 수도 있습니다 .
[root@localhost ~]# ls -l | grep -i abc
-rw-r--r-- 1 root root 0 Feb 25 20:41 fileabc.txt
-rw-r--r-- 1 root root 0 Feb 25 20:41 fileABC.txt
다음 코드를 사용하십시오.
LC_COLLATE=en_US ; export LC_COLLATE
ls *abc*
LC_COLLATE=C ; export LC_COLLATE
tcsh에서 .aliases에 별명을 설정하십시오.
alias lsnc "ls BS!* | sort -f "
( "BS"= 하나의 "백 슬래시"; 브라우저에 표시하려면 이것을 사용해야했습니다.)
lsnc
대신에 사용하십시오ls
bash에서 .bash_aliases의 별칭을 다음과 같이 시도하십시오.
lsnc() { ls $1 | sort -f ; }
ls
예를 들어, 옵션을 사용하면 ls -l
간단한 수정 사항이 있습니다.
tcsh :
alias lsncl "ls -l BS!* | sort -f -k 9"
세게 때리다:
lsncl() { ls -l $1 | sort -f -k 9 ; }
=
lsnocase 다음에 ' '가 누락되지 않았습니까?
ls
, 거기에 아무것도 ls
하고 sort
할 수있는 상황을 해결 할 수 있습니다. 다른 답변에서 언급했듯이 문제는 ls
구문이 아닌 셸에서 해결해야 합니다.
shport -s nocaseglob
무엇입니까?