将文件解压缩到指定日期的文件夹

问题描述 投票:-1回答:1

我正在执行以下步骤:

  1. 从ftp下载zip文件(文件数不是常数)
  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


linux bash zip unzip
1个回答
0
投票

假设您的文件名data15061956.zip存储在变量zipfile中。如果您确定知道文件名始终具有这种格式,则可以通过

提取日期部分
datepart=$(tr -dc '[:digit:]' <<<$zipfile)

此方法只是丢弃(-dc)不是数字的任何内容。

另一种可能性(不需要子进程)是>

datepart=${zipfile:4:8}

这假定日期存储在文件名中的某个位置。

© www.soinside.com 2019 - 2024. All rights reserved.