在 Linux 中使用 CLI 更改文件夹中所有文件的扩展名



如何在 Linux 的 CLI 上使用一个命令更改文件夹中所有文件的扩展名?

使用 rename

rename 's/.old$/.new/' *.old

如果你安装了perl rename(有不同的rename实现),你可以做这样的事情:

$ ls -1
test1.foo
test2.foo
test3.foo
$ rename 's/.foo$/.bar/' *.foo
$ ls -1
test1.bar
test2.bar
test3.bar

您可以在命令行上使用 for 循环:

for foo in *.old; do mv $foo `basename $foo .old`.new; done

这将获取扩展名为 .old 的所有文件并将它们重命名为 .new

这应该适用于当前目录子目录。它将使用新扩展名重命名目录结构下的所有 .oldExtension 文件。

for f in `find . -iname '*.oldExtension' -type f -print`;do mv "$f" ${f%.oldExtension}.newExtension; done
这将以

递归方式工作,并且适用于包含空格的文件.
请务必在运行之前将.old.new替换为正确的扩展。

find . -iname '*.old' -type f -exec bash -c 'mv "$0" "${0%.old}.new"' {} ;

来源:递归地为所有文件添加文件扩展名(不是我的回答。

find . -type f -exec mv '{}' '{}'.jpg ;

说明:这将递归查找从当前目录 (.) 开始的所有文件(-类型 f),并将移动命令 (mv) 应用于每个文件。还要注意 {} 周围的引号,以便正确处理带有空格(甚至换行符...)的文件名。

最新更新