bash - 如何通过 shell 脚本在单个 zip 文件中添加多个文本文件
问题描述
我有多个文本文件位于一个文件夹中。这些文件是每天创建的,上面有时间戳,如 ABC_set_05082020.txt、DEF_set_050820202.txt。我想在包含所有这些文件的同一目录中创建一个像destination_05082020.zip 这样的文件夹。
我创建的脚本就像
FILE_DIR1=home/users/documents/Files
FILE_NAME=$1
FILE_DATE_TIME1="${FILE_NAME}_set_`date +%Y%m%d`"
FULL_PATH1="${FILE_DIR1}${FILE_DATE_TIME1}.dat"
if [ $# -lt 1 ]
then
echo "*************************************************************************"
echo "* ERROR script requires <workbookname> "
echo "*************************************************************************"
exit $EXIT_SYS_ERROR
fi
if [ "$FILE_NAME" = "ABC" ]
then
zip -r $FILE_DIR1/destination.zip $FULL_PATH1
fi
# done
printf "$SCRIPT_NAME `date`: Info. Complete Successfully, exitings |$RC|.\n"
exit $EXIT_SUCCESS
在这里,我可以在同一目录中创建destination.zip,并且destination.zip 还包含ABC_set_05082020.txt,但是当我解压缩destination.zip 时。它包含完整的文件夹路径,例如 home/users/documents/files/ABC_set_05082020.txt。当我解压缩它时,我不想要完整的路径。它应该只包含我的文本文件。请帮忙。
解决方案
尝试:
zip -rj $FILE_DIR1/destination.zip $FULL_PATH1
从man
页面
-j --junk-paths 仅存储已保存文件的名称(垃圾路径),不存储目录名称。默认情况下, zip 将存储完整路径(相对于当前目录)。
演示:
$zip -jr test.zip /home/renegade/test/file*
adding: file1.txt (stored 0%)
adding: file2.txt (stored 0%)
adding: file3.txt (stored 0%)
adding: file4.txt (stored 0%)
$zip -r test_2.zip /home/renegade/test/file*
adding: home/renegade/test/file1.txt (stored 0%)
adding: home/renegade/test/file2.txt (stored 0%)
adding: home/renegade/test/file3.txt (stored 0%)
adding: home/renegade/test/file4.txt (stored 0%)
$unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 2020-05-09 05:50 file1.txt
0 2020-05-09 05:50 file2.txt
0 2020-05-09 05:50 file3.txt
0 2020-05-09 05:50 file4.txt
--------- -------
0 4 files
$unzip -l test_2.zip
Archive: test_2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2020-05-09 05:50 home/renegade/test/file1.txt
0 2020-05-09 05:50 home/renegade/test/file2.txt
0 2020-05-09 05:50 home/renegade/test/file3.txt
0 2020-05-09 05:50 home/renegade/test/file4.txt
--------- -------
0 4 files
$
编辑:-D
不适用于-r
推荐阅读
- python - 使用 apply 将列附加到 DataFrame 并使用行上的 apply 根据现有值计算新列
- javascript - 单击图像时如何从图像中提交图像值
- dart - 在 Flutter 应用程序中标记推送时选择的菜单项
- wordpress - 使用 select2 for wordpress 插件选项页面的多选产品
- java - Spring REST 在双向 JPA 映射时返回递归 JSON
- java - 如何使用存储库和视图模型更新房间数据库中的字段
- angular - 未捕获(承诺):错误:无法匹配任何路由。URL 段:角
- sql - 如何将列值从存储过程中的另一个表更新到表中?
- javascript - 无法调试 AngularJS 项目
- c++ - gdb 中的 Thread 0x7ffffc57fa700 (LWP 31671) exited] 是什么意思?