如何按名称将多对文件压缩到单独的档案中?

如何按名称将多对文件压缩到单独的档案中?

我有几十组 Audacity 项目文件夹和 .aup 项目文件,它们的名称非常接近,例如 10-13-14-data 和 10-13-14.aup。我想通过命令行将所有这些文件自动压缩为单独的 zip 文件(例如命名为 10.13.14.zip),而不是遍历整个文件集并压缩每个文件(这应该在最初完成)。

我这样做是因为我想了解更多有关如何使用 CLI 的信息,并希望继续从 AskUbuntu 学习。我可以简单地浏览我必须压缩在一起的文件/文件夹的数量,但我借此机会保持耐心并学习一些新东西。谢谢!

答案1

您可以for在包含文件的目录的父目录中使用循环,例如

for f in */*; do 
    zip "${f%.*}".zip "${f%.*}.data" "${f%.*}.aup"
    echo mv -v -- "${f%.*}".zip /media/user/folder/$(basename "${f/.*/.zip}")      
done

测试后删除echo并再次运行以实际移动文件(在这种情况下您需要用它来替换sudo)。

答案2

我(在爸爸的大力帮助下)想出了这个主意。

dates=`ls *.aup | sed 's/\(.*\).aup/\1/'`
for i in $dates; do zip -r $i $i*
mv $i /media/user/folder
done

我自己也不完全理解这一点,但它目前正在发挥作用;如果有人想解释我刚刚是如何解决我自己的问题的,我将代表那些将来找到这个问题/答案的人表示感谢;感谢那些试图提供帮助的人!

相关内容