약 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