![이름에 특정 문자가 포함된 파일 나열](https://linux55.com/image/183393/%EC%9D%B4%EB%A6%84%EC%97%90%20%ED%8A%B9%EC%A0%95%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%ED%8C%8C%EC%9D%BC%20%EB%82%98%EC%97%B4.png)
예를 들어 이름에 "a"가 포함되어 있는 것처럼 현재 있는 디렉터리의 모든 파일을 나열하고 싶습니다. 명령의 첫 번째 부분이 이라는 것을 알고 있지만 ls -l
완료하는 방법을 모르겠습니다.
답변1
*
및 를 포함한 glob 와일드카드를 읽어야 합니다 ?
.
*
0개 이상의 문자 일치?
정확히 한 문자와 일치합니다.[...]
문자 집합 중 하나와 일치합니다(예: , , 중 하나[abc]
와 일치 ) .a
b
c
따라서 자신의 파일 이름이 포함된 모든 파일 이름을 찾으려면 abc
glob 을 사용하십시오 *abc*
. 이 목록은 원하는 곳 어디에서나 사용할 수 있습니다.
ls *abc*
rm -i *abc*
echo *abc*
그러나 명령줄이 실행되었습니다.뒤쪽에확장. (명령이 아닌 확장을 수행하는 셸입니다.) 따라서 이와 같은 파일 이름이 있는 경우 -abc
확장으로 인해 파일 이름 인수 없이 플래그 세트가 구문 분석 ls *abc
됩니다 . 현재 디렉터리에 대한 명시적 경로를 강제하기 위해 와일드카드 확장 앞에 접두사를 추가하여 이 문제를 해결했습니다.ls -abc
ls
-labc
./
ls ./*abc*
rm -i ./*abc*
echo ./*abc*
참고 ls
하세요콘텐츠디렉터리 이름 자체 대신 디렉터리 이름이 나열됩니다. 버전 -d
에서 지원 하는 경우 플래그를 사용하여 이 문제를 해결하세요 .-q
ls
ls -dq ./*abc*