重命名子目录中的文件
有什么方法批量重命名子目录中的文件?
例:
在具有目录和子目录的文件夹中将* .html重命名为* .htm。
Windows命令提示符:(如果在batch file中,将%x更改为%% x)
for /r %x in (*.html) do ren "%x" *.htm
这也适用于重命名文件的中间部分
for /r %x in (website*.html) do ren "%x" site*.htm
对于Windows,这是我find的最好的工具:
它可以做任何事情,并有厨房水槽。
对于Linux来说,你有大量的脚本语言和shell来帮助你,就像以前的答案一样。
find . -regex ".*html$" | while read line; do A=`basename ${line} | sed 's/html$/htm/g'`; B=`dirname ${line}`; mv ${line} "${B}/${A}"; done
在python中
import os target_dir = "." for path, dirs, files in os.walk(target_dir): for file in files: filename, ext = os.path.splitext(file) new_file = filename + ".htm" if ext == '.html': old_filepath = os.path.join(path, file) new_filepath = os.path.join(path, new_file) os.rename(old_filepath, new_filepath)
在Bash中,您可以执行以下操作:
for x in $(find . -name \*.html); do mv $x $(echo "$x" | sed 's/\.html$/.htm/') done
我确定有一种更优雅的方式,但这是我脑海中的第一件事:
for f in $(find . -type f -name '*.html'); do mv $f $(echo "$f" | sed 's/html$/htm/') done
如果你有forfiles(它带有Windows XP和2003以及我认为更新的东西),你可以运行:
forfiles / S / M * .HTM / C“cmd / c ren @file * .HTML”
在Linux上,您可以使用“ 重命名 ”命令批量重命名文件。
In bash use command rename :) rename 's/\.htm$/.html/' *.htm # or find . -name '*.txt' -print0 | xargs -0 rename 's/.txt$/.xml/' #Obs1: Above I use regex \. --> literal '.' and $ --> end of line #Obs2: Use find -maxdepht 'value' for determine how recursive is #Obs3: Use -print0 to avoid 'names spaces asdfa' crash!
Total Commander是一个文件pipe理器应用程序,允许您列出并select其目录和子目录中的所有文件,然后您可以运行任何总指挥官操作。 其中之一是:多重命名选定的文件。
AWK在Linux上。 对于第一个目录,这是你的答案…通过在dir_path上recursion调用awk来推断,也许通过编写另一个awk来写下这个确切的awk,等等。
ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
对于Windows,我已经使用基于正则expression式的重命名和拖放支持方便地创build了一个VBScript解决scheme 。 尝试一下,如果你喜欢 – 把它放在一个VBS文件,并放在你的文件夹在资源pipe理器。
在Windows上, 重命名在这方面做得相当不错。 免费软件,但不是开源的。
在Windows上,你可以在https://filerenamer.codeplex.comfind开源简单的C# 批量文件重命名应用程序,使用一个简单的excel文件 。 给这个应用程序提供一个包含两列源代码和目标代码的excel文件,然后完成。
在Unix上,你可以使用rnm :
rnm -rs '/\.html$/.htm/' -fo -dp -1 *
要么
rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *
说明:
-
-ns
:名称string(新名称)。/n/
是一个名称string规则,扩展为没有扩展名的文件名。 -
-ss
:searchstring(正则expression式)。 search匹配的文件。 -
-rs
:replace/search_regex/replace_part/modifier
格式的string -
-fo
:仅文件模式 -
-dp
:目录深度(-1表示无限制)。