본문 바로가기
Programming/Linux

[linux] 공백 포함 파일 이동

by NAMP 2017. 3. 13.

[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

댓글