2016-01-07 50 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 
相關問題