在linux中有任何方法可以显示2个不同命令的输出,这些命令引用相同的对象,但在没有脚本的情况下以隔行格式提供不同的数据。
解释我的意思当我说隔行扫描格式时请考虑以下内容。
ls --full-time
将显示当前目录中每个子文件夹的完整时间戳和文件夹名称。
du -sh ./*
将显示当前目录中每个子文件夹的总大小和名称。
如果我要运行一个命令,然后运行另一个命令,我会在各自的行上获得所有大小,每个大小旁边都有一个文件夹名称,然后我会得到所有日期,每个日期都附带一个文件夹名称他们自己的路线。
通过"隔行扫描"我的意思是每个命令的第一个输出输出,最好是在一行上。然后,每个命令的第二行输出以相同的方式呈现(ect)。 I.E将显示所有这些数据,以便每个文件夹的日期,大小和名称都出现在同一行,尽管并非所有这些数据都是由同一命令提供的。 (我不介意文件夹名称是否显示两次,因为这两个命令都提供了这一点。)
答案 0 :(得分:1)
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