编写命令来查找所有具有 . 后缀/扩展名的文件.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
如果有问题的文件也可以位于子目录中,事情就会变得更加复杂。从bash
v4 开始,您可以使用以下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
。