我只想使用 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/