在 bash 中移动文件并自动重命名复制的文件而不覆盖现有文件的方法
我正在对大量包含大量 jpg 的目录进行重大重组,其中一些目录与其他目录中的文件同名。我想将文件移动/复制到备用目录,并让 bash 自动重命名它们(如果名称与该目录中的另一个文件匹配)(将 IMG_238.jpg
重命名为 IMG_238_COPY1.jpg
,< code>IMG_238_COPY2.jpg 等),而不是覆盖现有文件。
我已经设置了一个脚本,该脚本采用 jpeg 并将它们移动到基于 exif 数据的新目录。移动一个 jpg 的脚本的最后一行是: mv -n "$JPEGFILE" "$DIRNAME"
我使用 -n 选项是因为我不想覆盖文件,但现在我必须手动对那些没有移动/复制的进行排序。我的 GUI 自动执行此操作...是否有一种相对简单的方法可以在 bash 中执行此操作?
(如果重要的话,我在 Mac OSX Lion 中使用 bash 3.2)。
I'm doing some major restructuring of large numbers of directories with tons of jpgs, some of which my have the same name as files in other directories. I want to move / copy files to alternate directories and have bash automatically rename them if the name matches another file in that directory (renaming IMG_238.jpg
to IMG_238_COPY1.jpg
, IMG_238_COPY2.jpg
, etc), instead of overwriting the existing file.
I've set up a script that takes jpegs and moves them to a new directory based on exif data. The final line of the script that moves one jpg is: mv -n "$JPEGFILE" "$DIRNAME"
I'm using the -n option because I don't want to overwrite files, but now I have to go and manually sort through the ones that didn't get moved / copied. My GUI does this automatically... Is there a relatively simple way to do this in bash?
(In case it matters, I'm using bash 3.2 in Mac OSX Lion).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这应该可以做到
编辑:改进。
This ought to do it
EDIT: Improved.
您可以尝试下载并查看Ubuntu/Debian的基于Perl的
重命名
有效。它具有 sed 风格的功能。引用手册页(在我的系统上,但脚本应该与链接的脚本相同):You can try downloading and seeing if Ubuntu/Debian's Perl-based
rename
works. It hassed
-style functionality. Quoth the man page (on my system, but the script should be the same one as linked):