Как добавить несколько текстовых файлов в один zip-файл через сценарий оболочки - PullRequest
0 голосов
/ 08 мая 2020

У меня несколько текстовых файлов, находящихся в одной папке. Эти файлы создаются ежедневно с отметкой времени, например 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, но когда я распаковываю папку назначения. zip. Он содержит полный путь к папке, например home / users / documents / files / ABC_set_05082020.txt. Я не хочу, чтобы в нем был полный путь, когда я его распаковываю. Он должен содержать только мой текстовый файл. пожалуйста, помогите.

1 Ответ

0 голосов
/ 08 мая 2020

Попробуйте:

zip -rj $FILE_DIR1/destination.zip $FULL_PATH1

From man page

-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

...