1

我正在尝试使用 _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

抱歉,这还是有点新意。

4

2 回答 2

3

使用 (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

但使用glob代替:

for i in $ORIGINALS/*.zip;do

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

于 2012-11-07T22:43:05.347 回答
1

我知道您已经有了解决方案,但只是为了后代,您自己的 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它是解决许多问题的强大解决方案,但它肯定不是工具箱中唯一的锤子。

于 2012-11-09T03:10:39.473 回答