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/'