在 Linux 中保留扩展名的同时重命名文件?
Rename file while keeping the extension in Linux?
我有一个目录,其中包含多个具有不同扩展名(pdf、doc、txt...等)的文件。
我正在尝试根据目录名称重命名所有文件,同时保持文件扩展名相同。如果所有文件都是 PDF,下面的代码可以正常工作,否则它也会将 txt 文件扩展名更改为 pdf。
如何在保留文件扩展名的同时重命名文件
mv "$file" "${dir}/${dir}-${count}.pdf"
你可以通过 bash 来做到这一点。
能否提供更多详细信息。你如何决定这个 $dir 和 $count 变量值。
如果您已经知道要更改文件名的原因,如下所示
旧名称|新名称|路径
test.1|newtest.1|路径
arty.2|xyz.2|路径
如果你想用特定的名字替换它,那么你可以像上面那样准备一个列表,然后通过 while 或 for 循环遍历文件。下面是简单的 bash 代码片段,适用于您在多个目录下有文件的情况
while IFS="|" read OLD NEW PATH
do
cd $Path
filename=`echo $NEW|awk -F '.' '{print }'`
filetype=`echo $NEW|awk -F '.' '{print }'`
mv $OLD $filename.$filetype
done<FILE_PATH
如果想在单个目录下执行操作,那么下面的代码片段就可以了。
for i in $(ls /tmp/temp)
do
filename=`echo $i|awk -F "." '{print }'`
fileType=`echo $i|awk -F "." '{print }'`
mv $i $filename.$fileType
done
我假设您是在某种循环中执行此操作?如果是这样,您可以先使用
获取文件扩展名
ext="${file##*.}" # eg. ext="txt", ext="pdf"...
并在 mv
命令中将 pdf
替换为 $ext
。使用 sh
、bash
、dash
、ksh
进行了测试。
我有一个目录,其中包含多个具有不同扩展名(pdf、doc、txt...等)的文件。
我正在尝试根据目录名称重命名所有文件,同时保持文件扩展名相同。如果所有文件都是 PDF,下面的代码可以正常工作,否则它也会将 txt 文件扩展名更改为 pdf。
如何在保留文件扩展名的同时重命名文件
mv "$file" "${dir}/${dir}-${count}.pdf"
你可以通过 bash 来做到这一点。
能否提供更多详细信息。你如何决定这个 $dir 和 $count 变量值。
如果您已经知道要更改文件名的原因,如下所示
旧名称|新名称|路径
test.1|newtest.1|路径
arty.2|xyz.2|路径
如果你想用特定的名字替换它,那么你可以像上面那样准备一个列表,然后通过 while 或 for 循环遍历文件。下面是简单的 bash 代码片段,适用于您在多个目录下有文件的情况
while IFS="|" read OLD NEW PATH
do
cd $Path
filename=`echo $NEW|awk -F '.' '{print }'`
filetype=`echo $NEW|awk -F '.' '{print }'`
mv $OLD $filename.$filetype
done<FILE_PATH
如果想在单个目录下执行操作,那么下面的代码片段就可以了。
for i in $(ls /tmp/temp)
do
filename=`echo $i|awk -F "." '{print }'`
fileType=`echo $i|awk -F "." '{print }'`
mv $i $filename.$fileType
done
我假设您是在某种循环中执行此操作?如果是这样,您可以先使用
获取文件扩展名ext="${file##*.}" # eg. ext="txt", ext="pdf"...
并在 mv
命令中将 pdf
替换为 $ext
。使用 sh
、bash
、dash
、ksh
进行了测试。