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

cyvaqqii  于 2023-02-18  发布在  Linux
关注(0)|答案(6)|浏览(96)

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

jecbmhm3

jecbmhm31#

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

58wvjzkj

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
iszxjhcz

iszxjhcz3#

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

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

这将采取扩展名为.old的所有文件并将其重命名为.new

ar5n3qh5

ar5n3qh54#

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

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

ahy6op9u5#

这将递归地工作,并且适用于包含空格的文件。
运行前,请确保将.old.new替换为正确的扩展名。
find . -iname '*.old' -type f -exec bash -c 'mv "$0" "${0%.old}.new"' {} \;

wmtdaxz3

wmtdaxz36#

来源:recursively add file extension to all files(不是我的答案。
find . -type f -exec mv '{}' '{}'.jpg \;
说明:递归查找从当前目录(.)开始的所有文件(-type f),并对每个文件应用move命令(mv)。2同时注意{}周围的引号,以便正确处理带有空格(甚至换行符...)的文件名。

相关问题