有没有办法在子目录中批量重命名文件?
例如:
在包含目录和子目录的文件夹中将*.html
重命名为*.htm
。
答案 0 :(得分:74)
Windows命令提示符:(如果在批处理文件中,将%x更改为%% x)
for /r %x in (*.html) do ren "%x" *.htm
这也适用于重命名文件的中间部分
for /r %x in (website*.html) do ren "%x" site*.htm
答案 1 :(得分:8)
对于Windows,这是我发现的最佳工具:
它可以做任何事情并且有厨房水槽。
对于Linux,您可以使用大量的脚本语言和shell来帮助您,就像之前的答案一样。
答案 2 :(得分:6)
find . -regex ".*html$" | while read line;
do
A=`basename ${line} | sed 's/html$/htm/g'`;
B=`dirname ${line}`;
mv ${line} "${B}/${A}";
done
答案 3 :(得分:5)
在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)
答案 4 :(得分:3)
在Bash中,您可以执行以下操作:
for x in $(find . -name \*.html); do
mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done
答案 5 :(得分:2)
我确信这是一种更优雅的方式,但这是我头脑中的第一件事:
for f in $(find . -type f -name '*.html'); do
mv $f $(echo "$f" | sed 's/html$/htm/')
done
答案 6 :(得分:2)
如果您有forfiles(它附带Windows XP和2003以及我认为的新内容),您可以运行:
forfiles / S / M * .HTM / C“cmd / c ren @file * .HTML”
答案 7 :(得分:1)
在Linux上,您可以使用“rename”命令批量重命名文件。
答案 8 :(得分:1)
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!
答案 9 :(得分:1)
Total Commander这是一个文件管理器应用,可让您列出&选择其目录中的所有文件sub-dirs,然后你可以对它们进行任何总指挥官操作。其中之一是:多重命名所选文件。
答案 10 :(得分:0)
Linux上的AWK。对于第一个目录,这是你的答案...通过在dir_path上递归调用awk来推断,也许是通过编写另一个awk来写下这个精确的awk ......等等。
ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
答案 11 :(得分:0)
对于Windows,我使用基于正则表达式的重命名和Drag& Drop支持进行了convenient litte VBScript solution。如果你愿意,试一试 - 把它放在一个vbs文件中,然后在资源管理器中放下你的文件夹。
答案 12 :(得分:0)
在Windows上,The Rename做得非常好。免费软件,但不是开源软件。
答案 13 :(得分:0)
在Windows上,您可以在 https://filerenamer.codeplex.com 中找到开源简单C#批量文件重命名应用程序,并使用简单的 Excel文件 。 给这个应用程序提供一个包含两列源和目标的excel文件,它就完成了。
答案 14 :(得分:0)
在Unix上,您可以使用rnm:
rnm -rs '/\.html$/.htm/' -fo -dp -1 *
或
rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *
说明:
-ns
:名称字符串(新名称)。 /n/
是一个名称字符串规则,可扩展为不带扩展名的文件名。-ss
:搜索字符串(正则表达式)。搜索匹配的文件。-rs
:替换/search_regex/replace_part/modifier
-fo
:仅文件模式-dp
:目录深度(-1表示无限制)。