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 globstar
in ksh93
, shopt -s globstar
in 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*!! 파일을 검색하고 있습니다.