我有大约 100 个 *.txt 文件。
我想删除/替换txt文件的后缀。
我如何在 LINUX 中做到这一点。
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
我不确定我是否正确理解了你的意思。以下代码将“示例”文件重命名为“重命名”文件:
for f in *.txt; do mv "$f" "$(echo "$f" | sed -e 's/001.f/rt/')";done