我想要重命名文件夹中的所有文件并添加
.xml
扩展名。我正在使用Unix。我该怎么做?在shell中,您可以这样做:
for file in *; do
if [ -f ${file} ]; then
mv ${file} ${file}.xml
fi
done
编辑
如果要对所有子目录进行递归操作,您应该使用find
命令:
for file in $(find -type f); do
mv ${file} ${file}.xml
done
另一方面,如果你要做的事情比这更复杂,那么你可能不应该使用 shell 脚本。
更好的方法是
使用下面由 Jonathan Leffler 提供的评论:
find . -type f -exec mv {} {}.xml ';'
find
命令查找文件;find . -type f -exec mv {} {}.xml ';'
。 - Jonathan Leffler不知道这是否是标准的,但我的Perl
包(Debian/Ubuntu)包括一个/usr/bin/prename
(以及一个符号链接只有rename
),它没有其他作用:
rename 's/$/.xml/' *
$(find -type f)
代替*
,并通过断言s/(?<!\.xml)$/.xml/
调整正则表达式。 - mariofind . -type f \! -name '*.xml' -print0 | xargs -0 rename 's/$/.xml/'
os.listdir
查找目录中所有文件的名称。如果您需要 递归地 查找子目录中的所有文件,请改用 os.walk
。它的API比 os.listdir
更复杂,但它提供了强大的递归遍历目录的方法。os.rename
来重命名这些文件。