【问题标题】:Bash shell: how to add a nameBash shell:如何添加名称
【发布时间】:2012-10-28 02:05:39
【问题描述】:

我正在尝试使用 _orig 重命名 bash 中的一些 zip 文件,但我似乎遗漏了一些东西。有什么建议吗??

我的目标:

  • 将文件移动到原始目录
  • 使用名称中的“_orig”重命名原始文件

我尝试编写的代码:

mv -v  $PICKUP/*.zip $ORIGINALS
for origfile in $(ls $ORIGINALS/*.zip);do
    echo "Adding _orig to zip file"
    echo
    added=$(basename $origfile '_orig').zip
    mv -v $ORIGINALS/$origfile.zip $ORIGINALS/$added.zip
done

抱歉还是有点新意。

【问题讨论】:

    标签: bash shell rename


    【解决方案1】:

    使用 (p) 重命名:

    cd <ZIP DIR>
    mkdir -p orig
    rename 's@(.*?)\.zip@orig/$1_orig.zip@' *.zip
    

    renamehttp://search.cpan.org/~pederst/rename/(许多发行版的默认设置)

    感谢从不使用

    for i in $(ls $ORIGINALS/*.zip);do
    

    但使用 globs 代替:

    for i in $ORIGINALS/*.zip;do
    

    http://porkmail.org/era/unix/award.html#ls

    【讨论】:

      【解决方案2】:

      我知道您已经有了解决方案,但为了后代,您自己的 shell 脚本的这个简化版本也应该适用于您似乎描述的情况:

      mkdir -p "$ORIGINALS"
      for file in "$PICKUP"/*.zip; do
          mv -v "$file" "$ORIGINALS/${file%.zip}_orig.zip"
      done
      

      这利用了 bash 中的“参数扩展”(您可以在 bash 的手册页中查看)。初始的mkdir -p 只是确保目标目录存在。 $PICKUP$ORIGINALS 周围的引号旨在确保在目录名称中包含空格和换行符等特殊字符是安全的。

      虽然prename 是许多问题的强大解决方案,但它肯定不是工具箱中唯一的锤子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-14
        • 2017-04-08
        • 1970-01-01
        • 2014-07-12
        • 1970-01-01
        • 2019-08-30
        • 1970-01-01
        • 2015-07-01
        相关资源
        最近更新 更多