共计 1477 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | 本教程将讨论将文件从特定扩展名更改为另一个扩展名的快速方法。我们将为此使用 shell 循环、rename 命令。 |
方法一:使用循环
在目录中递归更改文件扩展名的最常见方法是使用 shell 的 for 循环。我们可以使用 shell 脚本提示用户输入目标目录、旧的扩展名和新的扩展名以进行重命名。以下是脚本内容:
[root@localhost ~]# vim rename_file.sh | |
#!/bin/bash | |
echo "Enter the target directory" | |
read target_dir | |
cd $target_dir | |
echo "Enter the file extension to search without a dot" | |
read old_ext | |
echo "Enter the new file extension to rename to without a dot" | |
read new_ext | |
echo "$target_dir, $old_ext, $new_ext" | |
for file in *.$old_ext | |
do | |
mv -v "$file" "${file%.$old_ext}.$new_ext" | |
done; |
上面的脚本将询问用户要处理的目录,然后 cd 进入设置目录。接下来,我们得到没有点 .
的旧扩展名。最后,我们获得了新的扩展名来重命名文件。然后使用循环将旧的扩展名更改为新的扩展名。
其中 ${file%.$old_ext}.$new_ext
意思为去掉变量 $file
最后一个 .
及其右面的 $old_ext
扩展名,并添加 $new_ext
新扩展名。
使用mv -v
,让输出信息更详细。
下面运行脚本,将 /root/test 下面的以 .txt
结尾的替换成.log
:
[root@localhost ~]# chmod +x rename_file.sh | |
[root@localhost ~]# ./rename_file.sh | |
Enter the target directory | |
/root/test | |
Enter the file extension to search without a dot | |
txt | |
Enter the new file extension to rename to without a dot | |
log | |
/root/test, txt, log | |
renamed 'file10.txt' -> 'file10.log' | |
renamed 'file1.txt' -> 'file1.log' | |
renamed 'file2.txt' -> 'file2.log' | |
renamed 'file3.txt' -> 'file3.log' | |
renamed 'file4.txt' -> 'file4.log' | |
renamed 'file5.txt' -> 'file5.log' | |
renamed 'file6.txt' -> 'file6.log' | |
renamed 'file7.txt' -> 'file7.log' | |
renamed 'file8.txt' -> 'file8.log' | |
renamed 'file9.txt' -> 'file9.log' |
如果想将.log 结尾的更改回.txt,如下操作:
方法二:使用 rename 命令
如果不想使用脚本,可以使用 rename
工具递归更改文件扩展名。如下是使用方法:
[ | ]|
[ | ]
更改回.txt 扩展名也同样的操作:
[root@localhost test]# rename .log .txt *.log
总结
本教程讨论了如何将文件从特定扩展名更改为另一个扩展名的快速方法。我们将为此使用 shell 循环、rename 命令。
正文完
星哥玩云-微信公众号
