2016-01-07 37 views
2

在linux中,有什么方法可以呈现两个不同命令的输出,这两个命令引用相同的对象,但以不使用脚本的隔行格式提供不同的数据。将来自2个linux命令的输出组合成一个输出

解释我的意思当我说隔行格式考虑以下内容。

ls --full-time 

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

du -sh ./* 

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

如果我要运行一个命令,然后运行另一个命令,我会在各自的行上获得所有尺寸,每个尺寸旁边都有一个文件夹名称,然后我会得到所有日期,每个日期都伴随一个文件夹名称在他们自己的路线上。

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

+0

检查系统是否具有'stat' cmd('哪个stat',它应该在那里)。 'man stat'看看如何使用它的'printf'参数。祝你好运。 – shellter

回答

1

TL; TR:下面的命令只是说明如何在上面的输入中使用join命令。

ls --full-time -lh 

-h:与其他ls输出值一起显示在人类可读的格式文件大小的各个任务可以用来实现。


可以连同process substitution使用join命令:

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

如果你想要一个漂亮,对准的输出可以通过管道将在column命令:

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

我m加入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 
相关问题