2013-10-25 3 views

답변

4
for i in *.txt; do mv $i $(basename -s '.txt' $i).log; done 

또는 더 간단이 :

rename 's/\.txt$/.log/' *.txt 
+0

이름 바꾸기는하지 않았지만 첫 번째 명령에서 내게 다음과 같은 메시지를 보냈습니다. basename -s .txt $ i.log – user2370590

+2

'$ (...)'은 모든 쉘에서 백틱보다 읽기 쉽고 쉽게 사용할 수 있습니다. 중첩. – chepner

+0

@chepner 감사합니다! 그럼 첫 번째 명령을 제거합니다. –

0
for i in *.txt 
do 
    mv $i ${i%.*}.log 
done 

$ {var에 % "패턴"} 처음부터 변수의 내용을 마지막 해제 할 때까지 패턴 해당 (끝에서) (제외). 그래서 ". *"는이 경우 .txt를 자릅니다.

관련 문제