영숫자 파일 이름 바꾸기

영숫자 파일 이름 바꾸기

내 디렉토리에 다음 파일이 있습니다.

 GE.AARS_vs_Control16.txt
 GE.DHX30_vs_Control18.txt
 GE.DNAJC2_vs_Control18.txt

파일 이름을 다음으로 바꾸도록 제거 *_Control<numeric>하고 교체하고 싶습니다 .*_Others

 GE.AARS_vs_Others.txt
 GE.DHX30_vs_Others.txt
 GE.DNAJC2_vs_Others.txt

답변1

for file in /dir/*.txt; do
    mv "$file" "${file%_*}_Others.txt"
done

이는 마지막 매개변수부터 모든 것을 ${file%_*}제거하는 쉘 매개변수 확장의 한 형태입니다 ._

답변2

Perl rename도구를 사용하여 이름을 바꾸려는 파일과 동일한 디렉터리에 있다고 가정합니다.

rename 's/_Control1[68]/_Others/' GE.*_Control1[68].txt

답변3

약간의 난독화가 마음에 들면 다음과 같은 또 다른 접근 방식이 있습니다.

paste <(ls) <(ls | sed 's/_Control1[68]/Others') | sed 's/^/mv /' | bash

먼저, bash 없이 파이프라인을 실행해 보세요. :-) 디렉터리에 다른 파일이 없다고 가정합니다. 그렇다면 각각을 또는 이와 유사한 것으로 대체하여 ls목록 ls *Controll1[68].txt을 제한하십시오.

"나는 프로그램을 작성하는 것보다 프로그램을 작성하기 위한 프로그램을 작성하고 싶습니다" - Richard Sites

(Alan Perlis라고 맹세할 수 있지만 Google은 이에 동의하지 않습니다.)

관련 정보