Распакуйте файл в папку c Dated - PullRequest
0 голосов
/ 06 января 2020

Я делаю следующие шаги:

  1. Загрузка zip-файлов с ftp (количество файлов не является постоянным)
  2. Сохранение этих файлов во временном каталоге
  3. Каждое имя файла имеет шаблон 'dataDDMMYYYY.zip', я хочу извлечь дату из этого файла и создать папку с именем в качестве даты, указанной в имени файла zip, и распаковать файл их. А затем удалите временный каталог (т.е. все zip-файлы)

Я застрял в третьем шаге. Я не уверен, как извлечь дату из имени и создать каталог для имени. Может ли кто-нибудь, пожалуйста, помогите

Ниже грубый код, который я хочу

#!/usr/bin/env bash
root_dir=/abc/def/
temp_dir=/tmp/
wdir=$root_dir/<needed_date> #This date should be extracted from file name

set sftp:connect-program "ssh -a -x -o StrictHostKeyChecking=no"
sftp -P 7010 -oIdentityFile=~/.ssh/id_rsa_nst abcd@<ip> <<EOF
get -r dir1 $temp_dir
get -r dir2 $temp_dir
quit 0
EOF

cd $temp_dir/dir1
unzip '*.zip' $wdir
cd $temp_dir/dir2
unzip '*.zip' $wdir


1 Ответ

0 голосов
/ 06 января 2020

Предположим, что ваше имя файла data15061956.zip хранится в переменной zipfile. Если вы точно знаете, что имя файла всегда имеет этот шаблон, вы можете извлечь часть даты на

datepart=$(tr -dc '[:digit:]' <<<$zipfile)

. Этот подход просто отбрасывает (-dc) все, что не является ди git .

Другая возможность (которая не требует дочернего процесса) будет

datepart=${zipfile:4:8}

Это предполагает, что дата хранится в определенной позиции в имени файла.

...