在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
在一个目录中,我有一些*.html文件。我想把它们都重命名为*.txt
我该怎么做呢?我使用bash shell。
当前回答
这是我用来重命名。edge文件为。blade.php
for file in *.edge; do mv "$file" "$(basename "$file" .edge).blade.php"; done
很有魅力。
其他回答
使用rename命令的示例如下:
rename -n ’s/\.htm$/\.html/’ *.htm
-n表示它是测试运行,不会实际更改任何文件。它将向您显示删除-n后将重命名的文件列表。在上面的例子中,它将当前目录中的所有文件从扩展名为.htm的文件转换为.html。
如果上面测试运行的输出看起来没问题,那么你可以运行最终版本:
rename -v ’s/\.htm$/\.html/’ *.htm
-v是可选的,但是包含它是个好主意,因为它是你通过rename命令所做的更改的唯一记录,如下面的示例输出所示:
$ rename -v 's/\.htm$/\.html/' *.htm
3.htm renamed as 3.html
4.htm renamed as 4.html
5.htm renamed as 5.html
中间的棘手部分是使用正则表达式的Perl替换,如下所示:
rename -v ’s/\.htm$/\.html/’ *.htm
这是我用来重命名。edge文件为。blade.php
for file in *.edge; do mv "$file" "$(basename "$file" .edge).blade.php"; done
很有魅力。
重命名当前目录和子目录下所有文件的扩展名,不需要任何其他包(仅使用shell脚本):
在当前目录下创建shell脚本rename.sh,代码如下: #!/bin/bash 在$(查找。- name“* 1美元”);做 Mv "$file" "${file%$1}$2" 完成 通过./rename.sh .old .new运行它。 例如:./rename.sh .html .txt
你想要使用rename:
rename -S <old_extension> <new_extension> <files>
rename -S .html .txt *.html
这正是你想要的-它将所有匹配*.html的文件的扩展名从.html更改为.txt。
注意:Greg Hewgill正确地指出这不是bash内置的;是一个单独的Linux命令。如果你只是需要Linux上的一些东西,这应该可以工作;如果你需要一些更跨平台的东西,那就看看其他的答案。
在Linux或window git bash或window的wsl中,尝试以下命令,只需一行代码就可以更改当前目录或子目录甚至其子目录中的每个文件的扩展名
find . -depth -name "*.html" -exec sh -c 'mv "$1" "${1%.html}.txt"' _ {} \;