2013-04-02 120 views
1

我使用如何在目錄中獲取最新的文件名?

ls -ltr /homedir/mydirectory/work/ |tail -n 1|cut -d ' ' -f 10 

但是,這是獲得所需result.And也是其不可靠的一種非常原始的方法。 我得到的輸出只是執行

ls -ltr /homedir/mydirectory/work/ |tail -n 1 

-rw-r--r-- 1 user pusers 1764 Apr 1 12:06 firstfile.xml 

所以在這裏我得到的文件名。 但如果做上面的命令,輸出類似

-rw-r--r-- 100 user pusers 1764 Apr 1 12:06 firstfile.xml 

第一個命令失敗!可以理解的是,我正在削減現在不具有效力的第10個字符的結果。

那麼如何改進它。

+0

是否「最新」的意思是其中的修改日期是最文件最近? – 2013-04-02 05:58:20

+0

是的。代表着。 我只想要文件名 – R11G

回答

3

爲什麼你使用-l標誌爲ls如果你不需要它?如果您不需要更多的信息,而不是試圖「解析」其非統一輸出(強姦不良的文本處理實用程序...),則只需輸出ls即可輸出文件名。

LAST_MODIFIED_FILE=`ls -tr | tail -n 1` 
+0

但我想要文件名。這就是要求。 因此,必須使用「cut」 – R11G

+1

@ R11G Nah,你不需要。如果不是文件名,你認爲'ls'輸出怎麼樣,認真?你甚至嘗試過我提出的解決方案嗎? – 2013-04-02 06:12:42

+0

是的。我只是試過。 我仍然有困惑,就好像第二列(硬鏈接數到那個文件/目錄)是2/3個數字 - 我以前使用'cut'來獲取文件名的命令會失敗。 如何克服? – R11G

1

如果你真的想要實現這個使用方法,那麼,使用AWK的代替削減

ls -ltr /var/log/ |tail -n 1| awk '{print $9}' 
相關問題