![Unix 명령은 한 자리 숫자 및 TXT 확장자로 끝나는 모든 파일을 반환합니다.](https://linux55.com/image/27149/Unix%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%ED%95%9C%20%EC%9E%90%EB%A6%AC%20%EC%88%AB%EC%9E%90%20%EB%B0%8F%20TXT%20%ED%99%95%EC%9E%A5%EC%9E%90%EB%A1%9C%20%EB%81%9D%EB%82%98%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
한 자리 숫자로 끝나고 TXT 확장자를 가진 모든 파일을 반환하는 명령은 무엇입니까?
답변1
파일(또는 다른 유형의 노드)을 찾는 가장 기본적인 도구 중 하나가 이 find
유틸리티입니다.
find ./ -type f -name '*[!0-9][0-9].txt'
다음을 검색합니다.
- ...
./
현재 디렉터리( )에서 재귀적으로 실행됩니다. 이를 다른 경로로 변경하거나 대부분의 버전에서 기본값으로 그대로 둘 수도 있습니다find
. - ...디렉토리, 장치 노드, 심볼릭 링크 등이 아닌 파일 항목의 경우(
-type f
). 다른 유형도 찾으려면 이 옵션을 무시할 수 있습니다. - ...주어진 이름 패턴과 일치하는 항목입니다. find가 명령을 받기 전에 bash나 쉘이 이를 glob 패턴으로 해석하지 않도록 패턴 주위에 작은따옴표를 사용하고 있습니다. 별표는 임의 개수의 문자와 일치하며 파일은 숫자, 숫자, 확장자로 끝나서는 안 됩니다. (
-name '*[0-9].txt'
)
파일 이름 뒤에 단순히 숫자가 오는 파일이 있는 경우 .txt
위 명령은 숫자 앞에 숫자가 아닌 숫자가 필요하기 때문에 해당 파일을 놓칠 것입니다. 다음 해당 명령은 부울 연산자를 사용하여 숫자만 포함된 파일 이름( -o
is "or" 및 !
is "not")을 포함합니다.
find ./ -type f \( -name '*[!0-9][0-9].txt' -o -name '[0-9].txt' \)
find ./ -type f -name '*[0-9].txt' ! -name '*[0-9][0-9].txt'
대소문자를 구분한다는 점에 유의하세요. 민감하지 않은 일치를 원할 경우 대신 을 사용하여 -iname
이와 -name
유사한 항목을 일치시킬 수도 있습니다 file4.TXT
. 또한 파일이 해당 확장자를 가진 텍스트 파일이라고 주장한다고 해서 그것이 사실임을 의미하는 것은 아닙니다. Linux에서는 이름에 관계없이 모든 파일의 유형이 가능합니다. 다른 확장자가 있거나 전혀 확장자가 없는 텍스트 파일이 있을 수도 있습니다.
답변2
일반 오래된 POSIX 글로브를 사용하십시오.
ls -d -- [0-9].txt *[!0-9][0-9].txt
답변3
zsh에서는 setopt extended_glob
다음을 사용하십시오 ~/.zshrc
.
print -lr -- *[0-9].txt~*[0-9][0-9].txt
파일 이름이 다음으로 시작하지 않고 다음을 -
포함하는 경우 \
입력을 줄일 수 있습니다 .
print -l *[0-9].txt~*[0-9][0-9].txt
줄 바꿈 대신 이름 사이에 공백을 사용하여 이름을 표시하려면 다음 print -l
으로 바꾸십시오 . 서식이 지정된 파일 이름 (예: 별칭에 따른 색상)을 보려면 다음 으로 echo
바꾸거나 , 일치하는 항목이 디렉터리가 아닌 경우 다음을 사용하세요.print -l
ls -d
ls
ls
ls *[0-9].txt~*[0-9][0-9].txt
하위 디렉터리의 파일도 보려면 **/
패턴 앞에 다음을 추가하세요.
ls **/*[0-9].txt~*[0-9][0-9].txt
답변4
한 자리 숫자로 끝나고 확장자가 .txt인 파일을 반환하는 Unix 명령
ls -l *[0-9].txt