linux - 从 tar 归档 Linux 中提取前 10 个最大的文件

标签 linux file extract tar

我只想使用 Linux 终端从 tar 存档中提取前 10 个最大的文件。我可以插入要提取的文件的路径,但我想知道我是否可以使用命令对文件进行排序以便只提取其中的 10 个最大的文件。

tar -xvf myfile.tar |排序-n -r | head -n 2 > otherfile (这样我只成功保存了文件的名称,而不是文件..)

你能帮忙或建议吗?

最佳答案

您可以使用以下命令从 tar 中实际提取前 10 个最大的文件。

files=$(tar -tvf <tar-name> |sort -n -r |egrep -v "^d"|head | awk '{print $9}')
tar -xvf <tar-name> $files

让我解释一下它到底在做什么:

此命令会将存档内容列出到标准输出。

tar -tvf <tar-name>

这将对内容进行排序。

tar -tvf <tar-name> |sort -n -r

这将排除目录(如果有的话):

tar -tvf <tar-name> |sort -n -r |egrep -v "^d"

这将打印前 10 个文件(head 默认打印 10 个):

tar -tvf <tar-name> |sort -n -r |egrep -v "^d"|head

这将只获取文件名:

tar -tvf <tar-name> |sort -n -r |egrep -v "^d"|head | awk '{print $9}'

一旦我们得到文件名,我们将它保存在 files 变量中,然后我们可以使用下面的命令从 tarball 中获取确切的文件:

tar -xvf <tar-name> $files

关于linux - 从 tar 归档 Linux 中提取前 10 个最大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57917340/

相关文章:

c - 检索符号链接(symbolic link)的路径

linux - 使用ip,LOWER_UP是什么意思?

c - fgets 函数的第一个参数

java - 从文本文件中读取并存储在字符串中

python - opencv findContours 错过了一些区域。[没有得到所有正确的边界框]

C++ fork() 和 execv() 问题

linux - 如何通过 Ubuntu 中的脚本将十进制数转换为十六进制数

php - File_exist 在 Ubuntu/PHP 中显示错误

pdf - 从研究论文的 PDF 中提取信息

Javascript:如何获取字符串中的前 4 个数字?