在 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.txt
、2.txt
、3.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/