如何在Linux的CLI中使用一个命令更改文件夹中所有文件的扩展名?
jecbmhm31#
使用rename:rename 's/.old$/.new/' *.old
rename
rename 's/.old$/.new/' *.old
58wvjzkj2#
如果你已经安装了perl rename(有不同的rename实现),你可以这样做:
$ ls -1 test1.foo test2.foo test3.foo $ rename 's/\.foo$/.bar/' *.foo $ ls -1 test1.bar test2.bar test3.bar
iszxjhcz3#
您可以在命令行中使用for循环:
for foo in *.old; do mv $foo `basename $foo .old`.new; done
这将采取扩展名为.old的所有文件并将其重命名为.new
ar5n3qh54#
这应该对当前目录和子目录起作用。它将用新的扩展名重命名目录结构下的所有***.oldExtension***文件。
for f in `find . -iname '*.oldExtension' -type f -print`;do mv "$f" ${f%.oldExtension}.newExtension; done
ahy6op9u5#
这将递归地工作,并且适用于包含空格的文件。运行前,请确保将.old和.new替换为正确的扩展名。find . -iname '*.old' -type f -exec bash -c 'mv "$0" "${0%.old}.new"' {} \;
.old
.new
find . -iname '*.old' -type f -exec bash -c 'mv "$0" "${0%.old}.new"' {} \;
wmtdaxz36#
来源:recursively add file extension to all files(不是我的答案。find . -type f -exec mv '{}' '{}'.jpg \;说明:递归查找从当前目录(.)开始的所有文件(-type f),并对每个文件应用move命令(mv)。2同时注意{}周围的引号,以便正确处理带有空格(甚至换行符...)的文件名。
find . -type f -exec mv '{}' '{}'.jpg \;
6条答案
按热度按时间jecbmhm31#
使用
rename
:rename 's/.old$/.new/' *.old
58wvjzkj2#
如果你已经安装了perl
rename
(有不同的rename
实现),你可以这样做:iszxjhcz3#
您可以在命令行中使用for循环:
这将采取扩展名为.old的所有文件并将其重命名为.new
ar5n3qh54#
这应该对当前目录和子目录起作用。它将用新的扩展名重命名目录结构下的所有***.oldExtension***文件。
ahy6op9u5#
这将递归地工作,并且适用于包含空格的文件。
运行前,请确保将
.old
和.new
替换为正确的扩展名。find . -iname '*.old' -type f -exec bash -c 'mv "$0" "${0%.old}.new"' {} \;
wmtdaxz36#
来源:recursively add file extension to all files(不是我的答案。
find . -type f -exec mv '{}' '{}'.jpg \;
说明:递归查找从当前目录(.)开始的所有文件(-type f),并对每个文件应用move命令(mv)。2同时注意{}周围的引号,以便正确处理带有空格(甚至换行符...)的文件名。