我有几个目录和包含不具有文件扩展名的文件子目录。 我想补充.jpg
包含这些目录中的所有文件。 我已经看到了改变文件扩展名的bash脚本而不是仅仅增加一个。 它也必须是递归的,有人可以帮忙吗?
Answer 1:
替代命令没有明确的环路( man find
):
find . -type f -exec mv '{}' '{}'.jpg \;
说明:这个递归找到的所有文件( -type f
)从当前目录开始( .
和应用移动命令() mv
),他们每个人。 还要注意引号{}
使之与空间(甚至换行...)文件名妥善处理。
Answer 2:
这将查找没有扩展名并添加.JPG
find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
Answer 3:
这是一个有点晚了,但我想我要补充的是一个更好的解决方案(虽然也许少可读)比那些迄今为止可能是:
find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'
使用find | xargs
find | xargs
格局通常会产生更有效的执行,因为你没有一个新的进程为每个文件。
注意,这需要在Debian的发行版味重命名找到的版本(又名女士prename),而不是传统的重命名。 这只是一个很小的Perl脚本,虽然如此,这将是很容易使用上面的命令的任何系统上。
Answer 4:
像这样,
for f in $(find . -type f); do mv $f ${f}.jpg; done
我不希望你有空间分隔的文件名,
如果你这样做,该名称将需要处理一下。
如果你想从其他目录下执行命令,
可更换find .
用find /target/directory
。
Answer 5:
对于重命名在Windows基本没有扩展,你可以做所有的文件ren * *.jpg
由于文件没有扩展名,只需要用*,或者如果你想改变png格式为JPG使用ren *.png *.jpg
Answer 6:
rename
不知道,它可以在不扩展重命名文件(我是在Windows 7现在)
文章来源: recursively add file extension to all files