首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >递归地向所有文件添加文件扩展名

递归地向所有文件添加文件扩展名
EN

Stack Overflow用户
提问于 2009-07-10 09:04:58
回答 6查看 91.8K关注 0票数 120

我有几个目录和子目录,其中包含没有文件扩展名的文件。我想将.jpg添加到这些目录中包含的所有文件中。我见过用于更改文件扩展名的bash脚本,但不仅仅是添加一个扩展名。它还需要递归,有没有人能帮帮忙?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-07-10 09:14:52

不带显式循环的替代命令(man find):

代码语言:javascript
复制
find . -type f -exec mv '{}' '{}'.jpg \;

说明:这会递归查找从当前目录(.)开始的所有文件(-type f),并对每个文件应用移动命令(mv)。还要注意{}两边的引号,以便文件名中包含空格(甚至换行符...)得到了适当的处理。

票数 257
EN

Stack Overflow用户

发布于 2009-07-10 09:27:03

这将查找不带扩展名的文件并添加您的.jpg

代码语言:javascript
复制
find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
票数 69
EN

Stack Overflow用户

发布于 2009-07-14 03:51:58

这有点晚了,但我想我应该补充说,与目前为止的解决方案相比,一个更好的解决方案(尽管可读性可能较差)可能是:

代码语言:javascript
复制
find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'

使用find | xargs模式通常会导致更有效的执行,因为您不必为每个文件派生新的进程。

请注意,这需要在Debian风格的发行版(也称为prename)中找到的rename版本,而不是传统的rename。不过,这只是一个很小的perl脚本,所以在任何系统上使用上面的命令都很容易。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1108527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档