嘗試捕獲管道命令的結果

嘗試捕獲管道命令的結果

我有一個名為 list20140801.txt list20140802.txt ...的檔案的資料夾。

我正在嘗試這樣做

ls | sort | tail -3 | cat

但它只是給我文件名,而不是對它們進行分類。

答案1

根據cat手冊,貓的工作是:

將文件或標準輸入連接到標準輸出。

沒有理由cat將其標準輸入視為檔案名稱。你需要的是

LS |排序|尾-3 |貓

反而。

檢查xargs手冊頁以獲取更多資訊:http://linux.about.com/library/cmd/blcmdl1_xargs.htm

答案2

預設情況下, 的輸出已按照與預設排序ls相同的方式進行排序,因此不需要。sortsort

將生成的文件列表傳遞給命令的最常見方法是使用xargs.有關詳細信息,請參閱xargs手冊頁,但在這種情況下您不需要任何選項。 (xargs如果您有大量文件,可能無法執行您想要的操作,但在大多數常見情況下,它可以正常工作,而無需考慮這一點。)

如今許多 Linux 系統上使用的版本tail並不只是-3作為一個選項。它要求您使用-n3.

最後,cat管道末端的 沒有做任何有用的事情,因此也可以省略。

該命令應該執行您想要的操作。

ls | xargs tail -n3

更新

我剛剛閱讀了@AtomicHeartFather的答案,並意識到我可能把tail問題的部分放在了錯誤的位置。在這種情況下,命令將是

ls | tail -n3 | xargs cat

這幾乎是 AtomicHeartFather 寫的,除了sort.

相關內容