【问题标题】:how to rename multiple prefix filename with one command in linux ubuntu server 12.04如何在 linux ubuntu server 12.04 中使用一个命令重命名多个前缀文件名
【发布时间】:2014-11-17 05:11:01
【问题描述】:

我在这样的文件夹中有一个文件:

-rwxrwxrwx 1 www-data www-data   25088 Nov  6  2013 108400344_2223_abstraksi.doc
-rwxrwxrwx 1 www-data www-data   15119 Nov  6  2013 108400344_2223_abstraksi.docx
-rwxrwxrwx 1 www-data www-data  146532 Nov  6  2013 108400344_2223_abstraksi.pdf
-rwxrwxrwx 1 www-data www-data  145408 Nov  6  2013 108400344_2223_bab1.doc
-rwxrwxrwx 1 www-data www-data   75399 Nov  6  2013 108400344_2223_bab1.docx
-rwxrwxrwx 1 www-data www-data  193581 Nov  6  2013 108400344_2223_bab1.pdf
-rwxrwxrwx 1 www-data www-data  156672 Nov  6  2013 108400344_2223_bab2.doc
-rwxrwxrwx 1 www-data www-data  101341 Nov  6  2013 108400344_2223_bab2.docx
-rwxrwxrwx 1 www-data www-data  316476 Nov  6  2013 108400344_2223_bab2.pdf
-rwxrwxrwx 1 www-data www-data  952320 Nov  6  2013 108400344_2223_bab3.doc
-rwxrwxrwx 1 www-data www-data   89826 Nov  6  2013 108400344_2223_bab3.docx
-rwxrwxrwx 1 www-data www-data  399203 Nov  6  2013 108400344_2223_bab3.pdf

然后我想同时将 "108400344_2223_" 更改为 "14.04.329"。我尝试了几乎所有教程,但它失败了..那么如何在 linux ubuntu server 12.04 中做到这一点? 谢谢

【问题讨论】:

    标签: linux shell ubuntu filenames rename


    【解决方案1】:

    鉴于您在某个目录“e”中的文件:

    $ ls -1 e/
    108400344_2223_abstraksi.doc
    108400344_2223_abstraksi.docx
    108400344_2223_abstraksi.pdf
    108400344_2223_bab1.doc
    108400344_2223_bab1.docx
    108400344_2223_bab1.pdf
    108400344_2223_bab2.doc
    108400344_2223_bab2.docx
    108400344_2223_bab2.pdf
    108400344_2223_bab3.doc
    108400344_2223_bab3.docx
    108400344_2223_bab3.pdf
    

    您可以轻松地使用 字符串替换 将所有文件从 108400344_2223_file 重命名为 14.04.329file

    $ for i in e/*; do mv "$i" ${i//108400344_2223_/14.04.329}; done
    

    确认:

    $ ls -11 e
    14.04.329abstraksi.doc
    14.04.329abstraksi.docx
    14.04.329abstraksi.pdf
    14.04.329bab1.doc
    14.04.329bab1.docx
    14.04.329bab1.pdf
    14.04.329bab2.doc
    14.04.329bab2.docx
    14.04.329bab2.pdf
    14.04.329bab3.doc
    14.04.329bab3.docx
    14.04.329bab3.pdf
    

    就个人而言,我会在日期和文件之间添加下划线:

    $ for i in e/*; do mv "$i" ${i//108400344_2223/14.04.329}; done
    

    给予:

    14.04.329_abstraksi.doc
    14.04.329_abstraksi.docx
    ...
    

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      有很多方法可以做到这一点。

      1. 由于 Ubuntu 自带 perl rename 程序,你可以简单地做

        rename 's/108400344_2223_/14.04.329_/' *
        
      2. 外壳

        for f in *; do mv "$f" "${f/108400344_2223_/14.04.329_}"; done
        

      如果文件可以在多个子目录中,请使用find:

      find . -name '108400344_2223_*' -exec rename 's/108400344_2223_/14.04.329_/' {} +
      

      【讨论】:

        【解决方案3】:

        我希望这会有所帮助

        for k in `ls -la | awk '{print $9}'`; do mv $k 14.04.329`ls -la $k | awk -F _ '{print $3}'`; done
        

        输出是这样的:

        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329abstraksi.doc
        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329abstraksi.docx
        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329abstraksi.pdf
        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329bab1.doc
        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329bab1.docx
        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329bab1.pdf
        -rw-r--r-- 1 root root   0 Sep 23 09:46 14.04.329bab2.doc
        

        【讨论】:

        猜你喜欢
        • 2012-06-14
        • 2015-07-19
        • 2011-09-13
        • 2022-01-13
        • 2022-01-26
        • 2019-04-10
        • 1970-01-01
        • 1970-01-01
        • 2015-03-21
        相关资源
        最近更新 更多