
我有一個名為 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
相同的方式進行排序,因此不需要。sort
sort
將生成的文件列表傳遞給命令的最常見方法是使用xargs
.有關詳細信息,請參閱xargs
手冊頁,但在這種情況下您不需要任何選項。 (xargs
如果您有大量文件,可能無法執行您想要的操作,但在大多數常見情況下,它可以正常工作,而無需考慮這一點。)
如今許多 Linux 系統上使用的版本tail
並不只是-3
作為一個選項。它要求您使用-n3
.
最後,cat
管道末端的 沒有做任何有用的事情,因此也可以省略。
該命令應該執行您想要的操作。
ls | xargs tail -n3
更新
我剛剛閱讀了@AtomicHeartFather的答案,並意識到我可能把tail
問題的部分放在了錯誤的位置。在這種情況下,命令將是
ls | tail -n3 | xargs cat
這幾乎是 AtomicHeartFather 寫的,除了sort
.