2013-03-13 112 views
2

我想列出特定文件夾中的最後3個日誌,並將輸出重定向到另一個tmp.out文件。需要幫助在ls -ltr linux bash

ls -ltr /home/oracle/$dbserver/*.log | awk '{print $9}' | tail -3 | tee tmp.out 

我期望在tmp文件看到的是:

a.out 
b.out 
c.out 

我得到的卻是:

/home/oracle/DB1/a.out 
/home/oracle/DB1/b.out 
/home/oracle/DB1/c.out 

我一定要使用尾巴和T之間的事情。有人能幫助我嗎?

回答

2
ls -ltr /home/oracle.$dbserver/*.log | tail -3 | awk '{print $NF}' | awk -F/ '{print $NF}' | tee tmp.out 
+2

你的意思是'尾巴-3',而不是'尾巴-3'。 – 2013-03-13 19:13:45

1

突出部分cd到該目錄,然後

cd /home/oracle/$dbserver/ && ls -ltr *.log | awk '{print $9}' | tail -3 | tee $OLDPWD/tmp.out 
1

basename命令將採取的形式/foo/bar/baz.txt的字符串,返回簡單baz.txt。通過xargs調用它,確保使用命令行標誌-n 1,因此它一次只發送一個文件名到basename

ls -ltr /home/oracle/$dbserver/*.log | awk '{print $9}' | xargs -n 1 basename | tail -3 | tee tmp.out