在Linux中保留扩展名的同时重命名文件?

问题描述 投票:0回答:2

我的目录包含多个具有不同扩展名的文件(pdf,doc,txt ...等)。

我正在尝试根据目录名称重命名所有文件,同时保持文件扩展名相同。如果所有文件均为PDF,则下面的代码可以正常工作,否则它将txt文件扩展名也更改为pdf。

如何在保留文件扩展名的同时重命名文件

mv "$file" "${dir}/${dir}-${count}.pdf"
linux cygwin mv
2个回答
0
投票

您可以通过bash进行此操作。

您能否提供更多详细信息。您如何确定$ dir和$ count变量值。

如果您已经知道要通过什么来更改文件名,如下所示

旧名称|新名称|路径

test.1 | newtest.1 | Path

arty.2 | xyz.2 | Path

如果要用特定名称替换它,则可以准备上面的列表,然后在while或for循环中遍历文件。下面是简单的bash片段,用于文件位于多个目录下的情况

while IFS="|" read OLD NEW PATH
do
    cd $Path

    filename=`echo $NEW|awk -F '.' '{print $1}'`

    filetype=`echo $NEW|awk -F '.' '{print $2}'`

    mv $OLD $filename.$filetype

done<FILE_PATH

如果要在单个目录下执行操作,则下面的代码段将起作用。

for i in $(ls /tmp/temp)
do 
    filename=`echo $i|awk -F "." '{print $1}'`
    fileType=`echo $i|awk -F "." '{print $2}'`
    mv $i $filename.$fileType
done

0
投票

我假设您正在某种循环中执行此操作?如果是这样,您可以先使用

来获取文件扩展名
ext="${file##*.}"  # eg. ext="txt", ext="pdf"...

并在pdf命令中将$ext替换为mv。用shbashdashksh测试。

© www.soinside.com 2019 - 2024. All rights reserved.