2011-01-24 7 views
0

[sitename] .com 이름 지정 규칙을 준수하는 동일한 상위 디렉토리에 약 100 개의 디렉토리가 있습니다. 나는 모두 [sitename] .subdomain.com으로 이름을 바꾸고 싶습니다.빠른 bash 스크립트가 필요합니다.

for FILE in `ls | sed 's/.com//' | xargs`;mv $FILE.com $FILE.subdomain.com; 

을하지만 비참하게 실패

는 여기에 내가 뭘하려합니다. 어떤 아이디어?

답변

2

사용 배쉬 :

for i in * 
do 
    mv $i ${i%%.com}.subdomain.com 
done 

$ {. 내가 %% 닷컴} 구성 수익률을 '.com'접미사가없는 i의 값.

+0

완벽. 고맙습니다! – Aaron

0
find . -name '*.com' -type d -maxdepth 1 \ 
| while read site; do 
    mv "${site}" "${site%.com}.subdomain.com" 
    done 
0

무엇에 대해 :

ls | 
grep -Fv '.subdomain.com' | 
while read FILE; do 
    f=`basename "$FILE" .com` 
    mv $f.com $f.subdomain.com 
done 
7

사용 rename(1). 대신 보통 하나의 perl rename이있는 경우

rename .com .subdomain.com *.com 

는 그리고,이 작품 :

rename s/\\.com$/.subdomain.com/ *.com 
+0

나는 .com.''의 끝에 추가 기간이 있다고 생각. –

+0

그래, 고쳐 줬어. – Tonttu

+0

나는 보통 그 문제를 해결하기 위해 mmv에 도달한다. 나를위한 또 다른 도구를 알게 해줘서 고마워. –

0

참조 : http://blog.ivandemarino.me/2010/09/30/Rename-Subdirectories-in-a-Tree-the-Bash-way

#!/bin/bash 
# Simple Bash script to recursively rename Subdirectories in a Tree. 
# Author: Ivan De Marino <[email protected]> 
# 
# Usage: 
# rename_subdirs.sh <starting directory> <new dir name> <old dir name> 

usage() { 
    echo "Simple Bash script to recursively rename Subdirectories in a Tree." 
    echo "Author: Ivan De Marino <[email protected]>" 
    echo 
    echo "Usage:" 
    echo " rename_subdirs.sh <starting directory> <old dir name> <new dir name>" 

    exit 1 
} 

[ "$#" -eq 3 ] || usage 

recursive() 
{ 
    cd "$1" 
    for dir in * 
    do 
     if [ -d "$dir" ]; then 
     echo "Directory found: '$dir'" 
     (recursive "$dir" "$2" "$3") 
     if [ "$dir" == "$2" ]; then 
      echo "Renaming '$2' in '$3'" 
      mv "$2" "$3" 
     fi; 
     fi; 
    done 
} 

recursive "$1" "$2" "$3" 
-1

이 시도 :

for FILE in `ls -d *.com`; do 
    FNAME=`echo $FILE | sed 's/\.com//'`; 
    `mv $FILE $FNAME.subdomain.com`; 
done 
+1

-1'ls'의 출력을 파싱하고 불필요한 서브 셸에서'mv'를 실행합니다. – Sorpigal

관련 문제