linux - 从 tar 归档 Linux 中提取前 10 个最大的文件
问题描述
我只想使用 Linux 终端从 tar 存档中提取前 10 个最大的文件。我可以插入要提取的文件的路径,但我想知道是否可以使用命令对文件进行排序,这样我只能提取其中最大的 10 个。
tar -xvf myfile.tar | sort -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
推荐阅读
- mathematical-optimization - 对于哪些类型的问题,遗传算法是合适的选择?
- regex - 正则表达式不允许没有空格的连续字符
- python - 如何将for循环的输出保存到python中的列表?
- wordpress - 我的 wordpress 子主题不应用 css 更改
- c - 使用信号中断主线程
- uml - 我不懂关联类——UML类图
- javascript - Reactjs 根据 url 更新组件的最佳实践
- android - React Native v5,Android 9 - 未触发触摸事件
- python - 如何根据第一列在数据框中填充数据
- google-sheets-formula - Google 表格 - 查找和替换单元格中的特定字符