ls가 존재하지 않는 파일을 표시하는 이유는 무엇입니까?

ls가 존재하지 않는 파일을 표시하는 이유는 무엇입니까?

이름이 대문자로 시작하는 모든 파일을 나열하고 싶습니다.

[root@localhost /]# ls /usr/bin/[[:upper:]]*
/usr/bin/AtoB            /usr/bin/GenIssuerAltNameExt   /usr/bin/PKCS12Export
/usr/bin/AuditVerify     /usr/bin/GenSubjectAltNameExt  /usr/bin/POST
/usr/bin/BtoA            /usr/bin/GET                   /usr/bin/PrettyPrintCert
/usr/bin/CMCEnroll       /usr/bin/HEAD                  /usr/bin/PrettyPrintCrl
/usr/bin/CMCRequest      /usr/bin/HtFileType            /usr/bin/RSA_SecurID_getpasswd
/usr/bin/CMCResponse     /usr/bin/HttpClient            /usr/bin/RunSimTest
/usr/bin/CMCRevoke       /usr/bin/IBMgtSim              /usr/bin/TokenInfo
/usr/bin/CRMFPopClient   /usr/bin/Mail                  /usr/bin/X
/usr/bin/ExtJoiner       /usr/bin/OCSPClient            /usr/bin/Xorg
/usr/bin/GenExtKeyUsage  /usr/bin/PKCS10Client

잘 작동하지만 현재 폴더를 적용하면 이상해 보입니다.

[root@localhost /]# ls ./[[:upper:]]*
snk321cq
[root@localhost /]# ls -lt snk321cq
ls: cannot access snk321cq: No such file or directory
[root@localhost /]# ls -lt ./snk321cq
ls: cannot access ./snk321cq: No such file or directory

왜 표시되어야 합니까 snk321cq? 그러한 파일은 실제로 존재하지 않습니다.

답변1

파일은 패턴과 일치하는 디렉터리에 있습니다. 다음을 사용하세요.

ls -d ./[[:upper:]]*

기본적으로 디렉터리 이름이 인수로 전달되면 ls해당 이름 대신 해당 내용이 표시됩니다. 이 -d옵션은 이 기능을 비활성화합니다.

이 모드를 사용할 때 쉘은 확장된 디렉토리 이름을 수신하기 [[:upper:]]*위해 대문자로 시작하는 모든 파일 이름을 확장합니다 .ls

답변2

내용을 나열하지 않고 파일/디렉토리만 나열해야 하는 경우 다음을 사용하는 것이 좋습니다.

find  /usr/bin/ -maxdepth 1 -name "[[:upper:]]*"

find어쨌든 ls파일/디렉토리를 찾는 것보다 낫습니다.
/usr/bin/Xvfb /usr/bin/Mail /usr/bin/GET /usr/bin/POST /usr/bin/HEAD /usr/bin/Test

이 방법으로 검색 결과의 ls 출력을 표시할 수 있습니다.

find /usr/bin/ -maxdepth 1 -name [[:upper:]]* -ls 272304 1956 -rwxr-xr-x 1 root root 1999608 Oct 18 07:48 /usr/bin/Xvfb 269561 0 lrwxrwxrwx 1 root root 15 Nov 4 2011 /usr/bin/Mail -> ../../bin/mailx 283683 16 -rwxr-xr-x 1 root root 14519 Aug 19 2010 /usr/bin/GET 283685 16 -rwxr-xr-x 1 root root 14519 Aug 19 2010 /usr/bin/POST 283684 16 -rwxr-xr-x 1 root root 14519 Aug 19 2010 /usr/bin/HEAD 21421 4 drwxr-xr-x 2 root root 4096 Jan 13 08:17 /usr/bin/Test

관련 정보