Programing

Bash에서 재귀 적으로 파일 확장자 변경

crosscheck 2020. 11. 10. 07:51
반응형

Bash에서 재귀 적으로 파일 확장자 변경


이 질문에 이미 답변이 있습니다.

내가 디렉토리를 통해 반복을 반복적으로하고 특정 확장자의 모든 파일의 확장자를 변경하고자하는 말 .t1.t2. 이를 수행하기위한 bash 명령은 무엇입니까?


이름을 변경할 수 있으면 다음을 사용하십시오.

find . -name "*.t1" -exec rename 's/\.t1$/.t2/' '{}' \;

이름을 바꿀 수없는 경우 다음을 사용하십시오.

find . -name "*.t1" -exec bash -c 'mv "$1" "${1%.t1}".t2' - '{}' \;

사용중인 버전이 옵션 bash지원하는 경우 globstar(버전 4 이상) :

shopt -s globstar
for f in **/*.t1; do
    mv "$f" "${f%.t1}.t2"
done 

또는 간단히 mmv명령을 설치하고 다음을 수행 할 수 있습니다 .

mmv '*.t1' '#1.t2'

다음 #1은 첫 번째 glob 부분 *입니다 *.t1.

또는 순수한 bash의 경우 간단한 방법은 다음과 같습니다.

for f in *.t1; do
    mv "$f" "${i%.t1}.t2"
done

(예 : 또는 for같은 외부 명령의 도움없이 파일을 나열 할 수 있음 )lsfind

HTH


나는 bash에서 이렇게 할 것입니다.

for i in $(ls *.t1); 
do
    mv "$i" "${i%.t1}.t2" 
done

편집 : 내 실수 : 재귀 적이 지 않습니다. 재귀 파일 이름을 변경하는 방법은 다음과 같습니다.

for i in $(find `pwd` -name "*.t1"); 
do 
    mv "$i" "${i%.t1}.t2"
done

참고 URL : https://stackoverflow.com/questions/21985492/recursively-change-file-extensions-in-bash

반응형