gpt4 book ai didi

解压未知名称文件的 Bash 脚本

转载 作者:行者123 更新时间:2023-11-29 09:24:02 24 4
gpt4 key购买 nike

我有一个文件夹,在 rsync 之后会有一个 zip。我想将它解压缩到它自己的文件夹(如果 zip 是 L155.zip,将其内容解压缩到 L155 文件夹)。问题是我事先不知道它的名字(虽然我知道它将是“字母-数字-数字-数字”),所以我必须将一个未知的文件解压缩到它的未知文件夹中,并且这是自动完成的。

“unzip *”(或 unzip *.zip)命令在终端中有效,但在脚本中无效。这些是通过终端一个接一个地工作的命令,但不能在脚本中工作。

#!/bin/bash
unzip * #also tried .zip and /path/to/file/* when script is on different folder
i=$(ls | head -1)
y=${i:0:4}
mkdir $y
unzip * -d $y

首先我解压缩文件,然后我通过 ls 读取第一个解压缩文件的名称并将其保存在一个变量中。我取前 4 个字符并用它创建一个目录,然后再次将文件解压缩到该特定文件夹.

第一次解压完成后的整个过程,因为.zip里面的文件,都是以zip已有的名字开头的,所以如果L155.ZIP是zip,里面的文件就是L155* **.txt。

zip 文件位于 /path/to/file/NAME.zip。当我运行脚本时,出现如下错误:

unzip: cannot find or open /path/to/file/*.ZIP
unzip: cannot find or open /path/to/file//*.ZIP.zip
unzip: cannot find or open /path/to/file//*.ZIP.ZIP. No zipfiles found.
mkdir: cannot create directory 'data': File exists data
unzip: cannot find or open data, data.zip or data.ZIP.

最佳答案

原始答案

假设 foo.zip 包含一个文件夹 foo,您可以简单地运行

#!/bin/bash
unzip \*.zip \*

然后将其作为 bash auto-unzip.sh 运行。

如果你想把这些文件解压到不同的文件夹,那么我会把上面的修改为

#!/bin/bash
cp *.zip /home/user
cd /home/user
unzip \*.zip \*
rm *.zip

当然,您将从存储所有 zip 文件的文件夹运行。


另一个答案

另一个“简单”的修复方法是获取 dtrx (也可在 Ubuntu 存储库中使用,可能适用于其他发行版)。这会将您的每个 *.zip 文件提取到其自己的文件夹中。因此,如果您想要将数据放在不同的文件夹中,我会按照第二个示例进行相应的更改:

#!/bin/bash
cp *.zip /home/user
cd /home/user
dtrx *.zip
rm *.zip

关于解压未知名称文件的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989930/

24 4 0
文章推荐: java - 安卓内存问题
文章推荐: mysql - 我真的需要关闭 MySql 服务器来设置全局变量 log_bin_trust_function_creators 吗?
文章推荐: java - 如何将整个滚动
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com