[linux] 공백 포함 파일 이동
테스트 준비
$ touch 'file with space'
파일명에 공백이 포함된 파일을 생성합니다.
스크립트 작성
#!/bin/sh
foo='file with space'
mv $foo ${foo}_mv
mv 명령시 변수를 $foo 로 사용하면 공백 부분에서 문제가 발생합니다
./test.sh
mv: target ‘space_mv’ is not a directory
#!/bin/sh
foo='file with space'
mv "$foo" "${foo}_mv"
변수 사용시 "" 문자열로 감싸서 사용하여 처리합니다.
변수 사용
기본적으로 $변수명
으로 사용합니다. 만약 변수 뒤에 문자열이 붙어야 한다면 ${변수명}추가문자열
형태로 중괄호를 사용하여 구분합니다.
for 사용시 공백 포함 파일명 처리
#!/bin/sh
for filename in `find . -type f -name '*.smi'`
do
echo "FILE: $filename"
done
a space.smi
b space.smi
위와 같이 공백을 포함한 두 개의 파일이 있는 경우 스크립트를 실행하면 4번 출력됩니다.
FILE: ./a
FILE: space.smi
FILE: ./b
FILE: space.smi
구분값이 공백으로 지정되어 있으므로 이 부분을 변경합니다. IFS=$'\n'
를 추가합니다. IFS
(Internal Field Separator)
#!/bin/sh
IFS=$'\n'
for filename in `find . -type f -name '*.smi'`
do
echo "FILE: $filename"
done
위의 코드를 실행하면 2번 출력됩니다.
FILE: ./a space.smi
FILE: ./b space.smi
'Programming > Linux' 카테고리의 다른 글
[linux] Bash 쉘에서 빈 문자열 체크하기 (0) | 2017.03.10 |
---|---|
Unix/Linux Command df & du (0) | 2016.01.12 |
uname 사용법 (0) | 2014.11.10 |
Wubi 설치 (0) | 2012.03.07 |
useradd / groupadd (0) | 2009.11.16 |
댓글