递归地为所有文件添加文件扩展名
我有一些目录和子目录,其中包含没有文件扩展名的文件。 我想将 .jpg
添加到这些目录中包含的所有文件中。 我见过用于更改文件扩展名的 bash 脚本,但不只是添加一个。 它还需要递归,有人可以帮忙吗?
I have a few directories and sub-directories containing files with no file extension. I want to add .jpg
to all the files contained within these directories. I've seen bash scripts for changing the file extension but not for just adding one. It also needs to be recursive, can someone help please?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
没有显式循环的替代命令(
man find
):解释:这会递归地查找从当前目录 (
.
) 开始的所有文件 (-type f
) 并应用移动命令 (mv
) 到他们每个人。 另请注意{}
周围的引号,以便正确处理带有空格(甚至换行符...)的文件名。Alternative command without an explicit loop (
man find
):Explanation: this recursively finds all files (
-type f
) starting from the current directory (.
) and applies the move command (mv
) to each of them. Note also the quotes around{}
, so that filenames with spaces (and even newlines...) are properly handled.这将找到没有扩展名的文件并添加您的 .jpg
this will find files without extension and add your .jpg
这有点晚了,但我想我应该补充一个比迄今为止更好的解决方案(尽管可读性可能较差):
使用
find | xargs
模式通常会导致更高效的执行,因为您不必为每个文件创建一个新进程。请注意,这需要 Debian 风格的发行版中的 rename 版本(又名 prename),而不是传统的 rename。 不过,这只是一个很小的 Perl 脚本,因此在任何系统上使用上面的命令都很容易。
This is a little late, but I thought I would add that a better solution (although maybe less readable) than the ones so far might be:
Using the
find | xargs
pattern generally results in more efficient execution, as you don't have to fork a new process for each file.Note that this requires the version of rename found in Debian-flavored distros (aka prename), rather than the traditional rename. It's just a tiny perl script, though, so it would be easy enough to use the command above on any system.
像这样,
我不希望你有空格分隔的文件名,
如果这样做,则需要对名称进行一些处理。
如果您想从其他目录执行命令,
您可以将
find .
替换为find /target/directory
。like this,
I am not expecting you have space separated file names,
If you do, the names will need to be processed a bit.
If you want to execute the command from some other directory,
you can replace the
find .
withfind /target/directory
.要在 Windows basic 中重命名所有没有扩展名的文件,您可以执行
ren * *.jpg
由于文件没有扩展名,只需使用 *,或者如果您想将 png 更改为 jpg
使用 ren *.png *.jpg
For renaming all files with no extension in Windows basic you can do
ren * *.jpg
Since the file as no extension, just use the *, or if you want to change png to jpg
use
ren *.png *.jpg
rename
不确定它是否可以重命名没有扩展名的文件(我现在使用的是 Windows 7)
rename
not sure that it can rename files without extensions (I'm on windows 7 right now)