여러 파일을 가져와서 이름을 지정합니다.
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' *
간결하고 기억하기 쉬운 한 줄.