首页 > 解决方案 > 如何通过 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。当我解压缩它时,我不想要完整的路径。它应该只包含我的文本文件。请帮忙。

标签: bashshellfileunixsh

解决方案


尝试:

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


推荐阅读