首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用regexp在mac os x bash中重命名批文件

使用regexp在mac os x bash中重命名批文件
EN

Stack Overflow用户
提问于 2015-08-21 14:38:14
回答 1查看 412关注 0票数 1

我有一个特定案例的档案集:

代码语言:javascript
复制
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000005_10-23.mov
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000006_9-87.mov
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000007_10-18.mov
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000008_9-02.mov

我需要编写一个bash脚本来对当前目录中的所有这些文件进行批重命名,以匹配以下结果:

代码语言:javascript
复制
ultra-low_000005.mov
ultra-low_000006.mov
ultra-low_000007.mov
ultra-low_000008.mov

下面的脚本是从所有这些文件中删除常量前缀部分:

代码语言:javascript
复制
#!/bin/bash

echo "Input prefix and press ENTER:"
read prefix
echo "Your prefix will be: $prefix"
echo "Continue? y/n:"
read continue
if [ $continue == "y" ]
then
  for f in $prefix*; 
  do 
    mv "$f" "${f#$prefix}"; 
  done
fi

但是,这个脚本将文件留给最后一个不想要的部分:

代码语言:javascript
复制
ultra-low_000008_9-02.mov

因此,我认为它可以通过适当构造的regexp来完成,但我没有成功地使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 14:43:42

你可以:

代码语言:javascript
复制
for f in "$prefix"*; do 
  # removes prefix part
  temp="${f#$prefix}"

  # removes everything after last _ and then adds back extension .mov
  mv "$f" "${temp%_*}.${temp##*.}"
done
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32143128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档