2011-09-28 4 views
3

코드를 작성하려면 쉘 스크립트에서 현재 디렉토리의 확장자 .txt의 모든 파일 이름을 .c 확장자로 바꿉니다. 현재 디렉토리에 약 100 개가 포함되어 있어야합니다. txt 파일. 이 번호는 고정되어 있지 않습니다.쉘 스크립팅에서 같은 패턴의 파일 이름을 바꾸는 방법

+0

관련 질문 : [여러 패턴을 기반으로 파일의 이름을 바꾸는 더 나은 방법] (http://stackoverflow.com/a/25597051/2654678). –

답변

3

man rename을 참조하십시오. regexp 대체를 제공하는 여러 파일의 이름을 바꿀 수 있습니다. 당신이 시스템에 rename이없는 경우

rename 's/\.txt$/.c/' *.txt 

, 당신은 발견을 사용할 수 있습니다 : 당신은 당신이 원하는 것을 확인할 때

find . -name '*.txt' | while read FILE; do echo mv "$FILE" "$(echo "$FILE" | sed 's/\.txt$/.c/g')"; done 

echo를 제거합니다.

+0

내부 echo 명령에서'$ FILE'을 인용해야합니다. –

+0

@ 글렌 잭맨 : 오, 물론 - 좋은 캐치 –

1

AWK도이 트릭을 할 수 있습니다 : 당신이 일하고 만족하는 경우

kent$ ls *.txt|awk '{o=$0;gsub(/txt$/,"c"); print "mv "o" "$0;}'|sh 
3
for f in *.txt; do echo mv "$f" "${f%.txt}.c"; done 

이 "에코"제거합니다. 여기에 "%"의 의미는 bash manual을 참조하십시오.

관련 문제