【问题标题】:Linux rename files based on input fileLinux根据输入文件重命名文件
【发布时间】:2015-01-29 15:04:19
【问题描述】:

我需要重命名 Linux 中的数百个文件,以从命令行更改每个文件的唯一标识符。为了举例,我有一个文件包含:

old_name1 new_name1
old_name2 new_name2

并且需要将名称从新 ID 更改为旧 ID。文件名包含 ID,但也有额外的字符。因此,我的计划是:

abcd_old_name1_1234.txt ==> abcd_new_name1_1234.txt
abcd_old_name2_1234.txt ==> abcd_new_name2_1234.txt

使用rename 显然在这里很有帮助,但我正在努力研究如何遍历所需名称更改的文件并将其作为输入传递给rename

编辑:澄清一下,我正在寻找数百个不同的重命名命令,需要进行的不同更改都列在一个文本文件中。

抱歉,如果这个问题已经得到解答,我已经进行了很好的搜索,但找不到类似的案例。

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于 Unix 和 Linux (unix.stackexchange.com)

标签: linux bash rename


【解决方案1】:
rename 's/^(abcd_)old_name(\d+_1234\.txt)$/$1new_name$2/' *.txt

应该可以工作,具体取决于您是否安装了该软件包。也看看qmv (rename-utils)

如果您想要更多选项,请使用例如

shopt -s globstart
rename 's/^(abcd_)old_name(\d+_1234\.txt)$/$1new_name$2/' folder/**/*.txt

(在folder的子目录中查找所有txt文件),或者

find folder -type f -iname '*.txt' -exec rename 's/^(abcd_)old_name(\d+_1234\.txt)$/$1new_name$2/' {} \+

使用 GNU find 来做同样的事情

【讨论】:

    【解决方案2】:
    while read -r old_name new_name; do
        rename "s/$old_name/$new_name/" *$old_name*.txt
    done < file_with_names
    

    通过这种方式,您从 file_with_names 中读取 ID 并将文件重命名为 $old_name 替换为 $new_name,而文件名的其余部分保持不变。

    【讨论】:

    • 太棒了,正是我想要的。不知道单词的读取拆分,这通常非常有用。
    【解决方案3】:

    我正要写一个 php 函数来为自己做这件事,但我想出了一个更快的方法:

    ls 并从终端窗口将目录内容复制并粘贴到 excel 中。也许您可能需要使用online line break removal or addition tool。假设您的文件名在 A 列中,在 excel 中,在另一列中使用以下公式:

    ="mv "&amp;A1&amp;" prefix"&amp;A1&amp;"suffix"

    ="mv "&amp;A1&amp;" "&amp;substitute(A1,"jpeg","jpg")&amp;"suffix"

    ="mv olddirectory/"&amp;A1&amp;" newdirectory/"&amp;A1

    回到 Linux,创建一个新文件 nano rename.txt 并粘贴 excel 中的值。它们应该看起来像这样:

    mv oldname1.jpg newname1.jpg
    mv oldname1.jpg newname2.jpg
    

    然后关闭 nano 并运行以下命令: bash rename.txt。 Bash 只是运行文件中的每一行,就好像你输入了它一样。

    你就完成了!这种方法给出了错误的详细输出,这很方便。

    【讨论】:

      猜你喜欢
      • 2014-10-14
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 2012-04-26
      • 2017-03-01
      • 2011-05-26
      • 2023-03-29
      • 2017-12-23
      相关资源
      最近更新 更多