递归文件扩展名添加到所有文件(recursively add file extension to a

2019-06-25 14:01发布

我有几个目录和包含不具有文件扩展名的文件子目录。 我想补充.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