여러 파일의 일부 이름 바꾸기

여러 파일의 일부 이름 바꾸기

여러 파일을 가져와서 이름을 지정합니다.

data_a_LT.fits
data_a_LT.coo
data_a_LT.ec
data_a_LT.grp

모든 "a_LT"를 "LT_A"로 바꾸고 싶습니다.

data_LT_A.fits
data_LT_A.coo
data_LT_A.ec
data_LT_A.grp

하나의 명령으로 이를 수행하는 방법. 그것은 다음과 같습니다:

mv *a_LT* *LT_A*

답변1

배시 사용:

for file in *; do [[ -f "$file" ]] && mv "$file" "${file/a_LT/LT_A}"; done
data_LT_A.coo
data_LT_A.ec
data_LT_A.fits
data_LT_A.grp

답변2

만약에rename다음 명령을 사용할 수 있습니다:

rename 's/a_LT/LT_A/' *

또 다른 방법 awk:

find -type f | awk -F'a_LT' '{printf "mv \"%s\" \"%sLT_A%s\"\n", $0, $1, $2}' | bash

답변3

나는 xargs를 사용하는 데 익숙합니다.

ls -1 | sed 's/\(\(.*\)a_LT\(.*\)\)/\1 \2LT_A\3/' | xargs -n 2 mv

답변4

나는 다음 방법을 선택했는데 훌륭하게 작동합니다.

rename 's/a_LT/LT_A/g' *

간결하고 기억하기 쉬운 한 줄.

관련 정보