为所有具有特定扩展名的文件附加后缀

为所有具有特定扩展名的文件附加后缀

编写命令来查找所有具有 . 后缀/扩展名的文件.py。对于找到的每个文件,该命令应将后缀/扩展名附加.backup到该文件。因此,如果文件的名称为one.py,则其新名称将为one.py.backup

我试过

find . / -name "*.py" -type f -exec mv {} {}.backup \;

但它不起作用

答案1

基于 shell 的解决方案也可以工作,因为这里的任务非常简单(只需将字符串片段附加到文件名)

for file in *.py; do newname="$file.backup"; mv "$file" "$newname"; done

如果可能不存在这样的文件,则需要显式捕获该情况。假设bash,您可以使用以下nullglob选项:

shopt -s nullglob; for file in *.py; do newname="$file.backup"; mv "$file" "$newname"; done

或显式测试文件是否存在:

for file in *.py; do newname="$file.backup"; [ -f "$file" ] && mv "$file" "$newname"; done

如果有问题的文件也可以位于子目录中,事情就会变得更加复杂。从bashv4 开始,您可以使用以下globstar选项:

shopt -s globstar; for file in **/*.py; do newname="$file.backup"; mv "$file" "$newname"; done

同样,您可能必须结合 来shopt -s nullglob解决不存在此类文件的情况。

答案2

我相信你可以开始做类似的事情:

> find PATH -name "*.py"

您可以在其中将 更改PATH为您想要查找的所需文件夹...并且您可以使用另一个命令(如mv使用 )通过管道输出xargs

相关内容