如何通过保留我的文件名的前6个字符来重命名文件并删除其余的字符?

时间:2017-03-28 05:45:41

标签: linux

我的文件名如下:Rv0012_gyrB.txt,Rv0001_Rv.txt 如何通过保留我的文件名的前6个字符来重命名文件并删除其余的字符? 我想要的输出应该是: Rv0012.txt和Rv0001.txt 请告诉我,如何在Linux中使用脚本来处理多个文件。

2 个答案:

答案 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