使用空白shell脚本

时间:2015-07-10 20:16:40

标签: bash shell zip

我需要将多个文件压缩成一个zip文件。我还需要保留zip文件中文件的目录结构。要压缩的文件将位于具有完整路径的单独文本文件中。我将文本文件中的文件名读入变量并将其传递给zip命令。这是我使用的命令。

zip -r $EXP_DIR/Export_files.zip $BASE_DIR -i "$file_name"

它适用于单个文件。但是当我添加多个文件时,它会因以下错误而失败。

zip error: Nothing to do! (zip file name)

我不明白我在这里缺少什么。任何建议都将不胜感激。

谢谢, 古纳

1 个答案:

答案 0 :(得分:2)

1)myfile.txt包含由换行符分隔的文件名

zip out.zip -@ < myfile.txt

2)myfile.txt包含由空格分隔的文件名(文件名中不允许有空格!)

zip out.zip -@ < <(tr ' ' '\n' < myfile.txt)

来自man zip

  

如果文件列表指定为-@ [Not on MacOS],则zip取列表   输入文件的来自标准输入而不是来自命令行。
  例如,zip -@ foo将在foo.zip

中的stdin上每行列出一个文件