하위 디렉토리까지 파일명 일괄 변경하기

#!/bin/sh
dir="경로 지정"
cd "$dir"

# 현재 디렉토리를 기준으로 하위 모든 파일명,폴더명의 '..'를 없앤다.
find ./ ( ! -path "*.Apple*/*" -name "*..*" ) | sed -e 'p' -e "s/..//g" | xargs -n 2 mv

# 현재 디렉토리를 기준으로 하위 모든 파일명,폴더명의 ':2f'를 '-'로 바꾼다.
find ./ ( ! -path "*.Apple*/*" -name "*:2f*" ) | sed -e 'p' -e "s/:2f/-/g" | xargs -n 2 mv

 

[ Line 6 ]

find ./ ( ! -path "*.Apple*/*" ! -path "*.uni*" -name "*..*" ) | sed -e 'p' -e "s/..//g" | xargs -n 2 mv

 

[ 설명 ]

find ./ ( ! -path "*.Apple*/*" ! -path "*.uni*" -name "*..*" )

1) 맥과 데이터를 공유하면서 생성된 .AppleDouble 디렉토리들을 제외하고

2) unison 사용으로 인해 생선된 .unison 으로 시작하는 파일과 디렉토리들을 제외하고

3) 파일명/디렉토리명에 점이 2개 있다면

 

sed -e 'p' -e "s/..//g"

1) 바뀐 부분만 출력

2) ‘..’ 를 검색해서 ‘(공백)’으로 치환

 

xargs -n 2 mv

find 에서 나온 결과값 (변경 전 파일명/디렉토리명) – ①

sed 에서 나온 결과값 (변경 할 파일명/디렉토리명) – ②

2개(-n 2)를 mv 인자로 넣는다.

 

* 9번째 줄 내용은 6번째 줄과 거의 동일

답글 남기기