如何在Unix/Linux中为文件夹中的所有文件添加.xml扩展名


How to add .xml extension to all files in a folder in Unix/Linux

我想重命名文件夹中的所有文件并添加.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 ';'

不知道这是否是标准的,但是我的Perl包(Debian/Ubuntu)包含一个/usr/bin/prename(和一个符号链接只是rename),没有其他目的:

rename 's/$/.xml/' *
find . -type f '! -name '*.xml' -print0 | xargs -0 rename 's/$/.xml/'

In Python:

使用os.listdir查找目录中所有文件的名称。如果您需要递归地查找子目录中的所有文件,请使用os.walk。它的API比os.listdir更复杂,但它提供了递归遍历目录的强大方法。

然后使用os.rename重命名文件