【问题标题】:how to use linux shell pipe rename file?如何使用 linux shell 管道重命名文件?
【发布时间】:2013-03-01 06:11:57
【问题描述】:

我想使用带有管道的 shell 命令行来重命名文件。
示例:将x111.png 重命名为my_x111.png(为每个文件添加前缀“my_”)

我知道mv xxx bbb是将xxx重命名为bbb的最好方法,但是如何在shell中编写命令?

【问题讨论】:

标签: shell


【解决方案1】:
find -maxdepth 1 -type f | awk '{printf "mv %s my_%s\n", $2, $2}' FS=/ | sh

例子

mv 自述文件 my_README mv tree.pl my_tree.pl mv youtube.sh my_youtube.sh

【讨论】:

    【解决方案2】:
    ls -1 *.png | nawk '{p=$0;$0="my_"$0;;system("mv "p" "$0); }' 
    

    参考here

    【讨论】:

      【解决方案3】:
      rename 's/([^my_])(.*)/my_$1/g' *
      

      此命令会在所有文件名前面加上my_,不包括已经以my_ 开头的文件名。

      这确实取决于您的 rename 版本,这需要 perl 版本而不是 util-linux-ng 版本。

      【讨论】:

      • 那个正则表达式看起来不对:/([^my_])(.*)/ 会找到一个文件,它的字符不是my_。文件“my_foo”匹配。此外,$1第一个 组匹配括号,因此不是m|y|_ 的单个字符。您可能想要:rename 'substr($_,0,3) != "my_" and $_ = "my_$_"' *
      猜你喜欢
      • 2011-05-06
      • 2014-12-21
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2021-06-17
      • 2017-03-14
      • 2016-04-01
      相关资源
      最近更新 更多