有没有办法在子目录中批量重命名文件?

例如:

* .html 重命名为包含目录和子目录的文件夹中的 * .htm

有帮助吗?

解决方案

Windows命令提示符:(如果在批处理文件中,将%x更改为%% x)

for /r %x in (*.html) do ren "%x" *.htm

这也适用于重命名文件的中间部分

for /r %x in (website*.html) do ren "%x" site*.htm

其他提示

对于Windows,这是我发现的最佳工具:

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

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

对于Linux,您可以使用大量的脚本语言和shell来帮助您,就像之前的答案一样。

find . -regex ".*html<*>quot; | 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&quot; cmd / c ren @file * .HTML&quot;

在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 这是一个文件管理器应用程序,可让您列出&amp;选择其目录中的所有文件sub-dirs,然后你可以对它们进行任何总指挥官操作。其中之一是:多重命名所选文件。

Linux上的AWK。对于第一个目录,这是你的答案......通过在dir_path上递归调用awk来推断,也许是通过编写另一个写下这个精确awk的awk ...等等。

ls dir_path/. | awk -F"." '{print "mv file_name/"<*>" dir_path/"$1".new_extension"}' |csh

对于Windows,我使用基于正则表达式的重命名和拖放功能制作了方便的小型VBScript解决方案 ;放弃支持。如果你愿意,试一试 - 把它放在一个vbs文件中,然后在资源管理器中放下你的文件夹。

在Windows上,重命名会执行那个相当不错。免费软件,但不是开源软件。

在Windows上,您可以在 https中找到开源简单的C#批量文件重命名应用程序://filerenamer.codeplex.com 适用于简单的 excel文件。 给这个应用程序提供一个包含两列源和目标的excel文件,它就完成了。

在Unix上,您可以使用 rnm

rnm -rs '/\.html$/.htm/' -fo -dp -1 *

rnm -ns '/n/.htm' -ss '\.html

说明:

  1. -ns :name string(新名称)。 / n / 是一个名称字符串规则,扩展为不带扩展名的文件名。
  2. -ss :搜索字符串(正则表达式)。搜索匹配的文件。
  3. -rs :替换 / search_regex / replace_part / modifier
  4. 形式的字符串
  5. -fo :仅文件模式
  6. -dp :目录深度(-1表示无限制)。
  7. -fo -dp -1 *

说明:

  1. -ns :name string(新名称)。 / n / 是一个名称字符串规则,扩展为不带扩展名的文件名。
  2. -ss :搜索字符串(正则表达式)。搜索匹配的文件。
  3. -rs :替换 / search_regex / replace_part / modifier
  4. 形式的字符串
  5. -fo :仅文件模式
  6. -dp :目录深度(-1表示无限制)。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top