다음 명령 것 tar
모두 “점”파일 및 폴더 :
tar -zcvf dotfiles.tar.gz .??*
나는 정규 표현식에 익숙 하지만 해석 방법을 이해하지 못한다 .??*
. 나는 나열된 파일을 실행 ls .??*
하고 tree .??*
보았다. 예를 들어이 정규식에 폴더 내 모든 파일이 포함 .
됩니까?
답변
글롭 은 정규 표현식이 아닙니다. 일반적으로, 쉘은 당신이 glob로 인용하지 않은 명령 행에 입력 한 모든 것을 해석하려고 시도합니다. 쉘은 정규 표현식을 전혀 지원할 필요는 없습니다 (실제로는 더 많은 현대적인 것, 예를 들어 구문 의 =~
정규식 일치 연산자 bash
[[
).
이 .??*
글러브입니다. 리터럴 도트로 시작하는 파일 이름과 일치하는 .
두 문자 (앞에 반드시 같은 것은 아님) ??
, 그 뒤에 정규 표현식 ( [^/]*
예 : 0이 아닌 문자)이 일치 /
합니다.
쉘 경로 이름 확장 ( “글 로빙”의 전체 이름)에 대한 자세한 내용은 POSIX spec을 참조하십시오 .
답변
.??*
와일드 카드 ( 하지 정규 표현식, 그것은 그런 식으로 보이지만) 기간 (시작 파일 이름으로 변환 .
이 하나 개의 문자 (다음), ??
다음 다른 문자의 개수 (0 개 이상)를), 그리고 ( *
).
어쩌면 파일 이름의 와일드 카드에 대한이 페이지 가 도움이 될 것입니다.
답변
다른 답변에 추가하기 위해 ?
단일 문자는 단일 문자 파일 이름으로 변환 ??
되며 두 문자 만있는 파일 이름과 일치합니다.
[root@mercy testdir_2]# ls
ion it r
[root@mercy testdir_2]# ls ?
r
[root@mercy testdir_2]# ls ??
it
[root@mercy 1 testdir_2]# ls ???
ion
[root@mercy testdir_2]#