셸 빈 칸 이 있 는 파일 이름 을 처리 하 는 방법
아래 의 각본 을 보면 우 리 는 더욱 분명하게 알 수 있다.
실행 결 과 는 다음 과 같다.
실제로 현재 디 렉 터 리 의 파일 은 두 개 밖 에 없습니다.
간단 한 파일 이름,예 를 들 어,우 리 는 for i in*doc 와 같은 간단 한 방법 으로 파일 목록 을 얻 을 수 있 습 니 다.그러나 복잡 한 환경 에 대해 다음 과 같은 그림 에서 우 리 는 어떻게 이 목록 들 을 얻 을 수 있 습 니까?
for i in"*"를 통 해 파일 이름 의 목록 을 얻 을 수 있 는 방법 이 있 습 니 다.그러나 아주 나 쁜 목록 입 니 다.이 결 과 는 두 파일 이름 이 함께 있 는 목록 이기 때문에 우 리 는 후속 작업 을 할 수 없습니다.아래 그림 과 같 습 니 다.
"*\*"라 는 기 교 를 통 해 위 에서 말 한 문 제 를 피 할 수 있 지만 뮤 직 비디오 나 다른 조작 을 사용 할 때 문제 가 발생 할 수 있 습 니 다.
위의 문 제 는 따옴표($i)에 변 수 를 넣 어 해결 할 수 있 습 니 다.일반적으로 따옴표 의 빈 칸 은 정확하게 처리 할 수 있 습 니 다.그러나 이것 은 영원한 해결 방법 이 아니다.왜냐하면 우 리 는 파이프,서브 셸 등 복잡 한 상황 을 처리 할 수 없 기 때문이다.
하나의 궁 극적인 해결 방법 은 IFS(the Internal Field Separator)를 설정 하 는 것 이다.빈 칸 을 IFS 로 하지 말고 다른 기 호 를 선택 하 는 것 이다.먼저 man page 를 보 겠 습 니 다.
IFS: The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read built-in command. The default value is “
또 다른 방법 은 파일 이름 을 처리 하기 전에 빈 칸 을 특수 한 사용자 정의 기호 로 바 꾼 다음 처리 가 끝 날 때 바 꾸 는 것 이다.
safename="$(echo name | sed 's/ /_-_/g')"
original="$(echo $safename | sed s'/_-_/ /g')"
다른 방법 도 있 습 니 다.예 를 들 어 find 명령 을 이용 하 는 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.