Linux 명령은 TEMP로 시작하지만 두 자리 숫자로 끝나지 않는 모든 파일을 반환합니다.

Linux 명령은 TEMP로 시작하지만 두 자리 숫자로 끝나지 않는 모든 파일을 반환합니다.

TEMP로 시작하지만 두 자리 숫자로 끝나지 않는 모든 파일을 반환하는 Linux 명령은 무엇입니까?

나는 이것이 다음과 같아야 한다고 생각합니다.

ls -l TEMP*[!0-9][!0-9]

하지만 내 검색 결과에 일부 결과가 누락된 것 같습니다.

답변1

GNU 및 대부분의 최신 BSD의 경우 find:

find . -maxdepth 1 -type f -name 'TEMP*' ! -name "*[0-9][0-9]"

POSIX적으로:

find . ! -name . -prune  -type f -name 'TEMP*' ! -name "*[0-9][0-9]"

ksh또는 bash -O extglob또는 zsh -o kshglob:

ls -ld TEMP*@([^0-9]?|?[^0-9]) [T]EMP TEMP?

답변2

쉘이 ksh이거나 bash옵션 extglob( shopt -s extglob활성화)이 있는 경우

ls -d TEMP!(*[0-9][0-9])

작동해야합니다. 재귀적으로 검색하고 globstar를 활성화하려면( set -o globstarin ksh93, shopt -s globstarin bash) 다음을 수행할 수 있어야 합니다.

ls -d -- **/TEMP!(*[0-9][0-9])

(숨겨진 디렉터리는 기본적으로 탐색되지 않습니다.)

예를 들어,

$ ls -d -- **/TEMP*
TEMP12345  TEMP123ab  TEMPabc12  TEMPabcde  tests/TEMP12345  tests/TEMP123ab  tests/TEMPabc12  tests/TEMPabcde

그 다음에

$ ls -d -- **/TEMP!(*[0-9][0-9])
TEMP123ab  TEMPabcde  tests/TEMP123ab  tests/TEMPabcde

다음과 동일 zsh:

setopt extendedglob
ls -d -- **/TEMP^*[0-9][0-9]

답변3

당신의 생각은 괜찮습니다. temp로 시작하고 두 숫자로 끝나지 않는 모든 것을 찾으십시오. 불행하게도 당신은 문법적 오류를 범한 것 같습니다. 교체해야합니다! by ^. 이제 temp*99 및 temp*!! 파일을 검색하고 있습니다.

관련 정보