![Linux에서 파일 이름 목록에 대한 공통 접미사를 제거/교체하는 방법은 무엇입니까?](https://linux55.com/image/187135/Linux%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EB%AA%A9%EB%A1%9D%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B3%B5%ED%86%B5%20%EC%A0%91%EB%AF%B8%EC%82%AC%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%2F%EA%B5%90%EC%B2%B4%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
약 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