2012-05-11 103 views
0

我想使用例如bubblesort對修改時間進行排序,並使用 stat -c%y%n文件名打印arr []的每個元素。按修改時間排序文件

#!/bin/sh 

arr=(*) # * is list of all file and dir names 

newest=${arr[0]} 
for f in "${arr[@]}"; 
do 
    if [ $f -nt $newest ]; then 
    newest=$f 
    fi 
echo "$(stat -c %y %n $newest)" 
done 

我要帶輸出類似 LS -art --full時間但當然,這是更完整。我的問題是爲什麼它不打印文件名?非常感謝。

+0

你說上面的'統計-c%Y%N filename'但沒有'%N'在'stat -c%y $ newest'中。錯字? – geekosaur

+0

是的,對不起,我忘了它。無論如何,它並不工作。我不確定輸出的位置「echo」 – indiag

+2

'echo'和'$()'是粗略的反轉(它會摺疊空白);你真的想要嗎?直接運行'stat'可能會更準確。但我真正的意思是讓你看看你的格式字符串... – geekosaur

回答

2

格式字符串需要是單個參數;用引號來實現這一點。你可能不想在那裏使用echo $(stat ...),正如我在評論中指出的那樣。

stat -c '%y %n' "$newest" 

(從技術上講,你應該做更多的報價,對文件名包含空格的可能性。)