2015-09-01 47 views
1

我有一個包含多個文本文件的目錄。 例如:列出所有文本文件(目錄中的多個文本文件)的最高數字

name1.txt 
name2.txt 
name3.txt 
etc.. etc.. 

每個文本文件包含1號線,在該行是一個數,即「10」

我在想,如果它會是可能以某種方式回顯的文本文件名說出所有文本文件的前10位數字。

我想知道這是否可以通過PHP實時生成或通過bash腳本定期更新/ cron 謝謝!

回答

1

不是最有效的想法,但假設你不能使用DB(否則你可能會):

<?php 
    $files = scandir('path/to/files/directory'); 
    $rows = Array(); 
    foreach($files as $file){ 
    array_push($rows,file_get_contents('path/to/files/directory/'.$file); 
    } 
    arsort($rows); 
    $i = 0; 
    foreach($rows as $key => $row){ 
    if($i <= 10){ 
     echo 'On '.$files[$key].' the number is'.$row; 
    } 
    } 
?> 
+0

謝謝!這是完美的,快速的問題。是否可以在輸出旁邊的文件中列出數字?再次感謝! –

0

使用bash。

首先,創建一些文件:

for n in $(seq 20); do echo $RANDOM > name${n}.txt; done 

現在,前5名:

$ for f in *; do printf "%s\t%d\n" "$f" $(<$f); done | sort -k2nr | head -n 5 
name16.txt 30283 
name12.txt 29976 
name8.txt 28948 
name4.txt 28256 
name6.txt 28148 

只需將文件名

$ for f in *; do printf "%s\t%d\n" "$f" $(<$f); done | sort -k2nr | head -n 5 | cut -f1 
name16.txt 
name12.txt 
name8.txt 
name4.txt 
name6.txt 
1
grep . name*.txt | sort -nr -k2 | head -n 3 

輸出(例如):

 
name4.txt:1 
name3.txt:123 
name2.txt:444 
相關問題