gpt4 book ai didi

bash - 只有当 tar 中有文件可以提取到我的 CWD 时,才将 .tgz 提取到特定的子文件夹中

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

大多数 tar 文件解压缩到它们自己的子文件夹中(因为编写开源实用程序的人都是了不起的人)。

一些提取到我的 cwd 中,这使一切变得困惑。我知道有一种方法可以查看 tar 中的内容,但我想编写一个 bash 脚本,基本上保证我最终不会将 15 个文件提取到我的主文件夹中。

有什么建议吗?

伪代码:

if [listing of tar files] has any file that doesn't have a '/' in it:
mkdir [tar filename without extension]
tar xzvf [tar filename] into [the new folder]
else:
tar xzvf [tar filename] into cwd

编辑:

两种解决方案都很棒,我选择了下面的解决方案,因为我需要一个 bash 脚本,而且它不依赖于额外的软件。

但是,在我自己的机器上,我使用的是 aunpack,因为它可以处理更多的格式。

我将它与一个 shell 脚本一起使用,该脚本可以同时下载和解压缩所有内容。这是我正在使用的:

#!/bin/bash
wget -o temp.log --content-disposition $1
old=IFS
IFS='
'
r=`cat temp.log`
rm temp.log
for line in $r; do
substring=$(expr "$line" : 'Saving to: `\(.*\)'\')
if [ "$substring" != "" ]
then
aunpack $substring
rm $substring
IFS=$old
exit
fi
done
IFS=$old

最佳答案

来自 atoolaunpack 命令包这样做:

aunpack extracts files from an archive. Often one wants to extract all files in an archive to a single subdirectory. However, some archives contain multiple files in their root directories. The aunpack program overcomes this problem by first extracting files to a unique (temporary) directory, and then moving its contents back if possible. This also prevents local files from being overwritten by mistake.

关于bash - 只有当 tar 中有文件可以提取到我的 CWD 时,才将 .tgz 提取到特定的子文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7618711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com