스크립트 질문

auditory의 이미지

fdupes 는 디렉토리내에 중복된 파일을 찾아줍니다.

$ fdupes -1 dir/
dir/IMG_0062.JPG dir/Image\ 050.jpg 
dir/IMG_0054.JPG dir/Image\ 043.jpg 

이런식으로 결과가 나옵니다.

이걸 쉘 스크립트에서

x라는 변수에는 첫번째 파일명을 , y라는 변수에는 두번째 파일명을 받고 싶은데

파일 명에 공백이 있으니 잘 안되네요..

fdupes의 결과에서 파일명에 공백이나 탭이 있으면 백슬래쉬가 항상 앞에 붙어나옵니다.

이걸 이용해서 구분할 수 있을것 같은데요.. 좋은 방법 알려주시면 감사하겠습니다.

doodoo의 이미지

echo "dir/IMG_0062.JPG dir/Image\ 050.jpg" | sed 's/\\ /_/'
dir/IMG_0062.JPG dir/Image_050.jpg

되는데요...

고로...

fdupes -1 dir/ | sed 's/\\ /_/'

하면 될것 같네요...
auditory의 이미지


공백을 다른 문자로 치환하면,

그 파일을 억세스할때 다시 파일이름을 가져와야해서요..

기존 파일명에 _가 없으니 파싱만하고 다시 _를 공백으로 바꾸는것도 이 케이스에서는 가능하긴한데..

좀더 일반적인 방법이 없을까요???

cinsk의 이미지

$ cat test.txt
dir/IMG_0062.JPG dir/My\ Image\ 050.jpg 
dir/IMG_0054.JPG dir/My\ Image\ 043.jpg 
$ cat test.sh
#!/bin/sh
 
while read LINE; do
    LINE=`echo "$LINE" | sed 's/\([^\\]\) /\1:/'`
    FIRST=`echo "$LINE" | awk -F: '{ gsub(/\\ /, " ", $1); print $1 }'`
    SECOND=`echo "$LINE" | awk -F: '{ gsub(/\\ /, " ", $2); print $2 }'`
 
    echo "First: |$FIRST|"
    echo "Second: |$SECOND|"
done
 
$ cat test.txt | ./test.sh
First: |dir/IMG_0062.JPG|
Second: |dir/My Image 050.jpg|
First: |dir/IMG_0054.JPG|
Second: |dir/My Image 043.jpg|
$ _

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/