重命名子目录中的文件

有什么方法批量重命名子目录中的文件?

例:

在具有目录和子目录的文件夹中将* .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的最好的工具:

http://www.1-4a.com/rename/

它可以做任何事情,并有厨房水槽。

对于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 * 

说明:

  1. -ns :名称string(新名称)。 /n/是一个名称string规则,扩展为没有扩展名的文件名。
  2. -ss :searchstring(正则expression式)。 search匹配的文件。
  3. -rs :replace/search_regex/replace_part/modifier格式的string
  4. -fo :仅文件模式
  5. -dp :目录深度(-1表示无限制)。