【问题标题】:remove prefix and suffix from the file with mv使用 mv 从文件中删除前缀和后缀
【发布时间】:2017-07-08 08:09:51
【问题描述】:

我有一个包含多个文件的目录。我需要重命名这些文件。

文件名如下所示:

snap-file-name-1.txt
snap-file-name-2.txt
snap-file-name-3.txt

我需要从这些文件中删除“snap”和“.txt”。

-file-name-1
-file-name-2
-file-name-3

我如何使用mv 命令做到这一点?

【问题讨论】:

  • 你试过rename命令吗?
  • 我试过但没用:重命名rename 's/\.txt$//' *.*

标签: linux rename mv


【解决方案1】:

使用 sed 操作文件名:

ls | while read file; do
    mv -- ${file} $(sed -n 's/snap\(.*\).txt/\1/p' <<<${file})
done

【讨论】:

    【解决方案2】:

    使用 Bash,您可以执行以下操作来重命名这些文件:

    #!/bin/bash
    files=$(find -type f -name 'snap-file-name-*.txt')
    for f in $files
    do
      mv "$f" "$(echo $f | sed -n 's/snap\(.*\).txt/\1/p')"
    done
    

    【讨论】:

      【解决方案3】:

      使用带有特定正则表达式模式的rename 命令:

      rename 's/snap([-a-z0-9]+)\.txt$/$1/' *.*
      

      【讨论】:

        猜你喜欢
        • 2012-08-15
        • 2011-10-23
        • 2023-04-05
        • 2021-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多