linux - 将 2 个 linux 命令的输出合并为一个输出

标签 linux command-line

在 linux 中,有什么方法可以在没有脚本的情况下呈现 2 个不同命令的输出,这些命令引用同一对象但以交错格式提供不同数据。

当我说隔行扫描格式时,要解释我的意思,请考虑以下内容。

ls --full-time 

将显示当前目录中每个子文件夹的完整时间戳和文件夹名称。

du -sh ./*

将显示当前目录中每个子文件夹的总大小和名称。

如果我要先运行一条命令再运行另一条命令,我会在各自的行中获取所有尺码,每个尺码旁边都有一个文件夹名称,然后我会获取所有日期,每个日期都附有一个文件夹名称他们自己的线路。

我所说的“交错”是指每个命令的第一行输出都显示出来,最好是在一行上。然后每个命令的第二行输出以相同的方式 (ect) 呈现。 I.E 所有这些数据都将显示,以便每个文件夹的日期、大小和名称都显示在同一行上,尽管并非所有这些数据都是由同一命令提供的。 (我不介意文件夹名称是否显示两次,因为这由两个命令提供)。

最佳答案

TL;TR:下面的命令仅显示如何将 join 命令与上述输入一起使用。以人类可读格式显示文件大小以及其他 ls 输出值的单独任务可以通过以下方式实现:

ls --full-time -lh

注意 -h


您可以使用 join命令与 process substitution 一起:

join -1 2 -2 9  <(du -sh *) <(ls --full-time)

如果你想要一个漂亮的、对齐的输出,你可以将其通过管道传递给 column 命令:

join -1 2 -2 9  <(du -sh *) <(ls --full-time) | column -t

我加入了 du 输出的第 2 列和 ls 输出的第 9 列,这是文件名。亲自尝试。


例子:

假设您的文件夹包含文件 1.txt2.txt3.txt。输出看起来像这样:

1.txt  -rw-rw-r--  1  jdoe  jdoe  34000     2016-01-07  17:08:04.017093659  +0100  36K
2.txt  -rw-rw-r--  1  jdoe  jdoe  4000      2016-01-07  17:08:18.353301052  +0100  4,0K
3.txt  -rw-rw-r--  1  jdoe  jdoe  34335000  2016-01-07  17:08:25.293401318  +0100  33M

关于linux - 将 2 个 linux 命令的输出合并为一个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658993/

相关文章:

node.js - 从命令行启动 Node.js 的专用 DevTools

bash - 查找唯一的文件

c - 执行文件需要读取权限吗?

command-line - phonegap cordova 无法找到 blackberry-nativepackager

python - 使用 cmd.exe 或 PowerShell 或 Python 从 Windows 命名管道读取

linux - 用于列出给定进程的所有后代的所有 PID 的命令

json - 如何使用 Windows 命令行将 JSON 文件解析为变量?

c++ - Linux下的socket开发

java - Linux 开发 : How to know what are the dependencies of my own program?

linux - Java执行linux命令