zoukankan      html  css  js  c++  java
  • 2.13 批量重命名和移动

    rename命令利用Perl正则表达式修改文件名。综合运用find、rename和mv。

    1、用特定的格式重命名当前目录下的图像文件,最简单的方法是使用下面的脚本:

    #!/bin/bash

    #文件名:rename.sh

    #用途:重命名.jpg和.png文件

    count=1;

    for img in `find . -iname '*.png' -o -iname  '*.jpg' -type f -maxdepth 1`

      do

         new=image-$count.${img##*.}

      echo "Renaming $img to $new"

      mv "$img" "$new"

      let count++

    done

    输出结果:

    $./rename.sh

    Renaming back.jpg to image-1.jpg

    Renaming new.jpg to image-2.jpg

    Renaming next.png to image-3.jpg

    该脚本将当前目录下所有的.jpg和.png文件重命名,新文件名的格式为image-1.jpg、image-2.jpg等等,

    2、工作原理

    使用find命令进行搜索,-o用于指定多个-iname选项,后者用于执行大小写无关的匹配。-maxdepth 1指在当前目录下进行匹配。

    为了跟踪图像编号,初始化count=1,下一步就是用mv命令重命名文件。因此需要构造出新的文件名。${img##*.}对处于当前循环中的文件名进行解析并获得文件扩展名。

    let count++用来在每次循环中增加文件编号,

    还有许多其他执行重命名操作的方法,

    $ rename *.JPG *.jpg

    将文件名中的空格替换成字符"_"

    $ rename 's/  /_/g' *

    's/  /_/g' 用于替换文件名,而*是用于匹配目标文件的通配符,它可以以*.txt或其他样式出现

    转换文件名的大小写

    $rename 'y/A-Z/a-z/' *

    将所有的.mp3文件移入给定的目录

    $find path -type f -name "*.mp3" -exec mv {} target_dir ;

    将所有文件名中的空格替换成字符"_"

    $find path -type f -exec rename 's/ /_/g'  {} ;

  • 相关阅读:
    LeetCode 32. 最长有效括号(Longest Valid Parentheses)
    LeetCode 141. 环形链表(Linked List Cycle)
    LeetCode 160. 相交链表(Intersection of Two Linked Lists)
    LeetCode 112. 路径总和(Path Sum)
    LeetCode 124. 二叉树中的最大路径和(Binary Tree Maximum Path Sum)
    LightGBM新特性总结
    sql service 事务与锁
    C#泛型实例详解
    C# 中的委托和事件(详解)
    C# DateTime日期格式化
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6194281.html
Copyright © 2011-2022 走看看