Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Unix/Linux中向文件夹中的所有文件添加.xml扩展名_Php_Python_Linux_Shell_Unix - Fatal编程技术网

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

Php 如何在Unix/Linux中向文件夹中的所有文件添加.xml扩展名,php,python,linux,shell,unix,Php,Python,Linux,Shell,Unix,我想重命名文件夹中的所有文件并添加.xml扩展名。我正在使用Unix。我该怎么做呢?在Python中: 使用os.listdir查找目录中所有文件的名称。如果还需要递归查找子目录中的所有文件,请改用os.walk。它的API比os.listdir更复杂,但它提供了递归遍历目录的强大方法 然后使用os.rename重命名文件。在shell上,可以执行以下操作: for file in *; do if [ -f ${file} ]; then mv ${file} ${fi

我想重命名文件夹中的所有文件并添加
.xml
扩展名。我正在使用Unix。我该怎么做呢?

Python中:

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


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

在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
脚本

更好

使用以下提供的注释:


不知道这是否标准,但我的
Perl
软件包(Debian/Ubuntu)包含一个
/usr/bin/prename
(还有一个符号链接只是
重命名
),它没有其他用途:

rename 's/$/.xml/' *

@网络开发者:你刚才是不是感谢我给你一个答案?说真的?我如何在所有子目录上递归地使用
find
查找文件<代码>查找-类型f-execmv{}{}.xml';'。另外,如果他们已经有了.xml扩展名,我不想让他们被重命名。是的,我们不要在评论中改变问题。查看如何测试文件名是否与结尾处的“.xml”匹配。如何在所有子目录上递归执行此操作,而不是在.xml文件上。i、 使用
$(查找-类型f)
而不是
*
重命名尚未重命名的文件。并使用断言
s/(?您可以使用带有-n标志的重命名来测试重命名的方式,而无需实际重命名文件。这些标记会造成混淆。是否要在PHP、Python或Unix shell中执行此操作?重命名“s/$/\.xml/”*参考:
rename 's/$/.xml/' *
find . -type f \! -name '*.xml' -print0 | xargs -0 rename 's/$/.xml/'