【问题标题】:Shell: How to move multiple files to a directory and zip that directory with different name?Shell:如何将多个文件移动到一个目录并以不同的名称压缩该目录?
【发布时间】:2016-05-03 21:26:45
【问题描述】:

例如,我的项目中有一些文件,结构可能是这样的

Project/
-- file1.txt
-- file2.txt
-- build/
-- sub-folder/

我想从我的项目中压缩一些文件,我可以使用 ZIP 命令来做到这一点(构建文件夹和一些其他文件从 zip 中排除)

zip -r build/project-04.05.2016 ./ -x *\build\* 

创建此新文件后:

build/project-04.05.2016.zip

在 Mac Finder 中,当我双击此文件时,它会像这样解压缩:

build/project-04.05.2016/
----------- file1.txt
----------- file2.txt
----------- subfolder/

我想以某种方式压缩这个档案,所以当它解压缩时,我得到一个包含相同内容的文件夹“project”而不是“project-04.05.2016”。在将文件压缩为“项目”后,我试图将文件重命名为“project-04.05.2016”,但解压缩后的结果是相同的。也许有一种方法可以首先将文件移动到某个临时的“项目”文件夹,然后将它们压缩到“project-04.05.2016.zip”?提前致谢。

【问题讨论】:

  • 我想你已经回答了你自己的问题。先试试看,如果有问题,再问更多。
  • 那么使用 zip 命令没有什么神奇的技巧可以做到这一点吗?当然,我会尝试创建那个临时文件夹

标签: linux bash shell unix terminal


【解决方案1】:

这是我目前的解决方案,它是一个小脚本,我对它不太满意,但它确实有效。如果有人用更优雅的解决方案回答,我会接受。所以,这里是:

#clear the contents of the previous build first
rm -r build/*

#copy required files to a temporary folder
rsync -av --exclude=build ./ build/project

#change current directory to build
cd build/

#zip files from build/project folder
zip -r "project-04.05.2016" project

#remove temporary folder
rm -r project/

#final zip file is at location:
#build/project-04.05.2016.zip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    相关资源
    最近更新 更多