Linux에서 파일 이름 목록에 대한 공통 접미사를 제거/교체하는 방법은 무엇입니까?

Linux에서 파일 이름 목록에 대한 공통 접미사를 제거/교체하는 방법은 무엇입니까?

약 100개의 *.txt 파일이 있습니다.

txt 파일의 접미사를 제거/교체하고 싶습니다.

리눅스에서는 어떻게 할 수 있나요?

Example:
1_S9_001.f.txt
2_S13_001.f.txt
3_S23_001.f.txt
4_S45_001.f.txt
5_S90_001.f.txt

Changing the file name:
1_S9.txt
2_S13.txt
3_S23.txt
4_S45.txt
5_S90.txt 

Renaming:
1_S9_rt.txt
2_S13_rt.txt
3_S23_rt.txt
4_S45_rt.txt
5_S90_rt.txt 

답변1

시스템에 따라 명령의 동작이 rename크게 달라질 수 있습니다. man자세한 내용은 페이지를 확인하세요 .

첫 번째 유형은 더 간단합니다. 대체할 문자열과 대체할 문자열을 지정하기만 하면 됩니다.

rename _001.f ""  *_001.f.txt
rename _001.f _rt *_001.f.txt

두 번째 유형은 Perl 대체를 사용합니다.

rename 's/_001\.f//'    *_001.f.txt
rename 's/_001\.f/_rt/' *_001.f.txt

또는 루프 및 매개변수 확장을 사용하여 직접 새 이름을 구성할 수도 있습니다.

for f in *_001.f.txt ; do
    mv "$f" "${f%_001.f.txt}".txt
    mv "$f" "${f%_001.f.txt}"_rt.txt
done

%"오른쪽에서 삭제"는 #왼쪽에서 삭제하는 것과 유사합니다.

답변2

내가 당신을 올바르게 이해했는지 잘 모르겠습니다. 다음 코드는 "example" 파일의 이름을 "rename" 파일로 바꿉니다.

for f in *.txt; do mv "$f" "$(echo "$f" | sed -e 's/001.f/rt/')";done

관련 정보