Macos 如何使用终端批量重命名文件?

Macos 如何使用终端批量重命名文件?,macos,shell,terminal,file-rename,batch-rename,Macos,Shell,Terminal,File Rename,Batch Rename,我有一组文件,它们都nnn.MP4.mov。我怎样才能将它们重命名为nnn.mov ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done 编辑:完全重写 for i in *; do j=`echo $i | cut -d . -f 1`; j=$j".mov"; mv $i $j; done 这将剪切第一个点之前的所有内容并附加.mov 但是,如果某些文件是hi.2.mov和

我有一组文件,它们都
nnn.MP4.mov
。我怎样才能将它们重命名为
nnn.mov

ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done
编辑:完全重写

for i in *; 
do j=`echo $i | cut -d . -f 1`; 
j=$j".mov";
mv $i $j; 
done
这将剪切第一个点之前的所有内容并附加.mov

但是,如果某些文件是hi.2.mov和hi.1.mov,则其中一个文件将被覆盖,因此请小心使用它^^

首先,使用以下命令进行试运行(实际上不会重命名任何文件):

for file in *.mov
do
  echo mv "$file" "${file/MP4./}"
done

如果一切正常,请删除第三行中的
回音
,以实际重命名文件。

我刚刚成功地使用了Automator(我第一次遇到麻烦),它工作得非常好。我将自动化保存为服务。制造出易于重复使用的产品大约需要10秒钟:

  • 开放式自动机
  • 选择“服务”作为文档类型
  • 将服务接收的选定“文本”更改为“文件和文件夹”
  • 考虑将“任何应用程序”更改为“查找程序”
  • 从侧边栏中,选择“文件和文件夹”(在库下),然后从中间列中列出的操作中,将“重命名查找器项目”拖到右侧,并将其放到“将操作或文件拖到此处以构建工作流”中
  • 将刚才添加的操作从“添加日期或时间”更改为“按顺序执行”
  • 单击操作底部的“选项”,并选中“工作流运行时显示此操作”选项
  • 点击“CMD+S”将服务保存为类似“替换文本”的内容
  • 完成了
    现在,您可以右键单击Finder中的任何选择,转到“服务”菜单并选择“替换文本”,填写更改或替换文本的方式,然后单击“继续”应用配置的更改。

    要测试打印操作:

    for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";echo mv \"$file\" \"$j\"; done
    
    要使其发挥作用:

    for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";mv "$file" "$j"; done
    

    即使在没有参数替换的非常旧的Shell上,这也能起作用,至少在我看来,它更容易阅读。

    在mac OSX上,您可以通过自制安装
    rename
    命令:
    brew install rename

    然后,可以在命令行上使用“查找/替换”从该文件夹重命名:

    rename 's/\.MP4\././' *
    
    您还可以使用
    手动重命名查看更多选项

    允许您使用Vim的文本编辑功能重命名多个文件

    输入vimv将打开一个Vim窗口,其中列出所有文件,您可以进行模式匹配、可视化选择等操作来编辑名称。退出Vim后,文件将被重命名


    [免责声明:我是该工具的作者]

    OSX有一个
    重命名文件…
    上下文菜单项,当您在Finder中选择两个或多个文件时会调用该菜单项。提供与上面自动回答相同的功能。尽管Automator为您提供了一些工具,您可以根据自己的意愿进行进一步的操作


    (我知道OP要求使用终端,但其他33个类似Automator response)如果它做了你想做的事情,删除-ii意味着,它认为应该有一条线路的延续。它所做的是将它重命名为“nnn.MP4.mov”。mov
    无法找出这不起作用的原因。。。有输出,看起来是这样,但实际上什么也没做。我最终发现,您需要删除ECHO语句,才能让它真正执行某些操作(无论如何,在OSX 10.7上)。因此,如果您保留了echo语句,那么您可以测试它,以查看重命名是否能够像您所希望的那样工作,然后删除echo以使其工作。因此,与ren*-hd.png*.png的Windows等价的是:对于*.png中的文件,请执行“$file”“${file/-hd/}”doneto以运行所需的脚本:1。保存在
    rename.sh
    文件中;2.使其可执行
    chmod 755 rename.sh
    ;3.从当前文件夹启动它,您可以在其中重命名文件和shell脚本
    /rename.sh
    ;4.如果结果良好,请从脚本中删除
    echo
    ,然后再次启动它。我需要向文件组添加扩展名。因此,我在scrip中的操作如下:
    mv“$file”“${file}.jpeg”
    这是一个脚本,需要创建为文件,然后正确运行?线索?作为单行cmd运行,如下所示:
    用于*.mov中的文件;执行echo mv“$file”“${file/MP4./}”;完成
    起作用。安装muCommander。它具有Total Commander样式的批重命名器。为什么要把时间浪费在那该死的100个字符的Mindblawing批处理命令上?@Nakilon因为学习命令行有更大的投资回报。我否决了它,因为这个问题有“终端”标签。答案很好,即使它不是OP要求的。欢迎任何让我学习Automator的借口:-)顺便说一句,它不适用于文件夹,但它适用于多个选定文件。非常好!谢谢你,太棒了!不要在意手术!你不是说从“添加时间和日期”改为“替换文本”吗?我已经把这个应用到了使用<代码> MGY<代码>的文件中,我需要通过修改<代码> **/COD>和一个中间的<代码> */代码>来完美地更改为<代码> -img> 。他很有魅力。非常感谢。谢谢你的单线解决方案
    
    for n in *.MP4.mov
    do
       mv $n $(echo $n | sed -e 's/.MP4//')
    done
    
    rename 's/\.MP4\././' *