셸 빈 칸 이 있 는 파일 이름 을 처리 하 는 방법

2578 단어 Shell스페이스 바
현재 많은 사람들 이 이름 을 지 을 때'An Introduction.doc'와 같은 빈 칸 을 즐겨 쓴다.그러나 이러한 명명 방식 은 리 눅 스 명령 행 도구 와 셸 에 어려움 을 주 었 습 니 다.대부분의 명령 에 서 는 파일 이름 의 일부분 이 아 닌 빈 칸 을 값 과 값 사이 의 구분자 로 사용 하기 때 문 입 니 다.
아래 의 각본 을 보면 우 리 는 더욱 분명하게 알 수 있다.
1
실행 결 과 는 다음 과 같다.
2
실제로 현재 디 렉 터 리 의 파일 은 두 개 밖 에 없습니다.
3
간단 한 파일 이름,예 를 들 어,우 리 는 for i in*doc 와 같은 간단 한 방법 으로 파일 목록 을 얻 을 수 있 습 니 다.그러나 복잡 한 환경 에 대해 다음 과 같은 그림 에서 우 리 는 어떻게 이 목록 들 을 얻 을 수 있 습 니까?
4
for i in"*"를 통 해 파일 이름 의 목록 을 얻 을 수 있 는 방법 이 있 습 니 다.그러나 아주 나 쁜 목록 입 니 다.이 결 과 는 두 파일 이름 이 함께 있 는 목록 이기 때문에 우 리 는 후속 작업 을 할 수 없습니다.아래 그림 과 같 습 니 다.
5
"*\*"라 는 기 교 를 통 해 위 에서 말 한 문 제 를 피 할 수 있 지만 뮤 직 비디오 나 다른 조작 을 사용 할 때 문제 가 발생 할 수 있 습 니 다.
6
위의 문 제 는 따옴표($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 “”.
7
또 다른 방법 은 파일 이름 을 처리 하기 전에 빈 칸 을 특수 한 사용자 정의 기호 로 바 꾼 다음 처리 가 끝 날 때 바 꾸 는 것 이다.
safename="$(echo name | sed 's/ /_-_/g')"
original="$(echo $safename | sed s'/_-_/ /g')"
다른 방법 도 있 습 니 다.예 를 들 어 find 명령 을 이용 하 는 것 입 니 다.
8

좋은 웹페이지 즐겨찾기