我有一些目录和子目录包含没有文件扩展名的文件。我想添加.jpg
到这些目录中包含的所有文件。我见过用于更改文件扩展名的 bash 脚本,但不仅仅是添加一个。它也需要递归,有人可以帮忙吗?
91815 次
6 回答
69
这将找到没有扩展名的文件并添加您的 .jpg
find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
于 2009-07-10T09:27:03.027 回答
9
这有点晚了,但我想我会补充一个比目前更好的解决方案(虽然可能不太可读)可能是:
find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'
使用该find | xargs
模式通常可以提高执行效率,因为您不必为每个文件创建一个新进程。
请注意,这需要在 Debian 风格的发行版中找到的 rename 版本(又名 prename),而不是传统的 rename。不过,这只是一个很小的 perl 脚本,因此在任何系统上使用上面的命令都很容易。
于 2009-07-14T03:51:57.533 回答
4
像这样,
for f in $(find . -type f); do mv $f ${f}.jpg; done
我不希望您有空格分隔的文件名,
如果这样做,则需要对名称进行一些处理。
如果要从其他目录执行命令,
可以将 替换find .
为find /target/directory
。
于 2009-07-10T09:07:15.763 回答
1
要在 Windows basic 中重命名所有没有扩展名ren * *.jpg
的文件,你可以这样做因为文件没有扩展名,只需使用 *,或者如果你想将 png 更改为 jpg 使用ren *.png *.jpg
于 2015-11-08T17:25:54.553 回答
0
rename
不确定它是否可以重命名没有扩展名的文件(我现在在 Windows 7 上)
于 2009-07-10T09:28:44.363 回答