我的文件名如下:Rv0012_gyrB.txt,Rv0001_Rv.txt 如何通过保留我的文件名的前6个字符来重命名文件并删除其余的字符? 我想要的输出应该是: Rv0012.txt和Rv0001.txt 请告诉我,如何在Linux中使用脚本来处理多个文件。
答案 0 :(得分:1)
for file in *; do
filename=${file%_*}
fileext=${file##*.}
if [ "$fileext" = "$file" ]; then
mv "$file $filename"
else
mv "$file $filename.$fileext"
fi
done
这应该这样做,假设您想在第一次出现下划线时分开。
答案 1 :(得分:0)
如果您想保留第一个 6 字符,请执行以下操作:
for file in `ls | grep .txt`;
do
extension="${file##*.}"
filename="${file%.*}"
filename=${filename:0:6}
echo $filename.$extension
mv $file $filename.$extension
done
如果你想在“_”之前获得所有字符,那么这将完成工作
for file in `ls | grep .txt`;
do
extension="${file##*.}"
filename="${file%.*}"
filename=`echo $filename | cut -d "_" -f1`
echo $filename.$extension
mv $file $filename.$extension
done
如果您有一些没有扩展名的文件,请尝试使用
for file in `ls`;
do
extension="${file##*.}"
filename="${file%.*}"
filename=`echo $filename | cut -d "_" -f1`
if [ $file == $extension ]
then
mv $file $filename
else
mv $file $filename.$extension
fi
done