ls/grep만 사용하여 길이가 8자이고 확장자가 없는 파일을 한 줄에 나열하려면 어떻게 해야 합니까?

ls/grep만 사용하여 길이가 8자이고 확장자가 없는 파일을 한 줄에 나열하려면 어떻게 해야 합니까?

확장자 없이 8자 이름을 가진 모든 파일을 나열하려고 합니다.

내 문제는 "."가 중간에 있는 "test.txt" 파일에서 시작됩니다.

나는 ls를 수행하고 출력을 파일로 리디렉션한 다음 grep을 사용하여 필요한 파일을 얻으려고 시도했지만 알고 싶습니다.

ls/grep/redirection/extglobs 등을 사용하여 한 줄로 이 작업을 수행할 수 있습니까?

답변1

grep을 사용하면 다음을 제외한 8자를 일치시킬 수 있습니다 ..

 $ ls | grep '^[^.]\{8\}$'

또는 파이프에 문제가 있는 경우:

 $ find . -regex '.*/[^.][^.][^.][^.][^.][^.][^.][^.]'

또는 많은 쉘에서 간단하게:

 $ ls -d [^.][^.][^.][^.][^.][^.][^.][^.]

답변2

?이를 사용하여 대부분의 셸에서 단일 문자를 일치시킬 수 있습니다 .

$ GLOBIGNORE='*.*' eval "ls -d ????????"

이 경우 변수는 파일 이름이 포함되지 GLOBIGNORE않도록 와일드카드를 부트스트랩하고 플래그는 디렉터리 이름을 일치시킬 때 콘텐츠 나열을 방지합니다. 자세한 내용을 보려면 사용하세요 ..-dman bash

답변3

ls [a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9] 

길이가 8자이고 영숫자만 포함하는 모든 파일 이름(하이픈, 마침표 등 없음)

답변4

의견을 주신 모든 분들께 감사드립니다. 몇 시간 후에 제가 하고 싶은 일이 무엇인지 알게 되었습니다.

$ ls -d !(!(??????)|*(*.*))

이것이 작동하려면 extglob을 설정해야 합니다.

관련 정보