[英]issue with changing file extensions with bash
find /path/to/files -type f -not -name "M*'.jpg" -exec mv "{}" "{}".mxg \;
我担心我犯了两个错误。
文件存储在目录结构中。 目标是保留文件名并将文件扩展名从.jpg更改为.mxg。 但仅适用于以“ M”作为文件名首字符的文件。
上一行具有以下结果:
应该这样做:
find /path/to/files -type f -name 'M*.jpg' -exec bash -c 'echo mv "$1" "${1/jpg/mxg}"' -- {} \;
一个更干净的解决方案是,如果您具有rename
命令。 但是,那里有不同的实现,因此请先阅读man
页,以检查您与我的man
是否相同。 我在Debian中使用的版本是Larry Wall在perl
的实现。 您可以通过示例在顶部附近rename 's/\\.bak$//' *.bak
或在底部附近rename 's/\\.bak$//' *.bak
AUTHOR部分来识别这一点。 通过此实现,您可以像这样重命名文件:
find /path/to/files -type f -name 'M*.jpg' -exec rename 's/jpg$/mxg/' {} \;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.