最も簡単な方法は、 glob修飾子のおかげでzshを使うことです。
print -lr -- $dir/**/$str*(om[1,10])
GNU findがあれば、ファイルの変更時間を表示させて、それでソートします。
find -type f -printf '%T@ %p```
find -type f -printf '%T@ %p\n' |
sort -k 1nr |
sed 's/^[^]* //' | head -n 10
```' |
sort -zk 1nr |
sed -z 's/^[^]* //' | tr '```
find . -type f -print |
perl -l -ne '
$_{$_} = -M; # store file age (mtime - now)
END {
$,="\n";
@sorted = sort {$_{$a} <=> $_{$b}} keys %_; # sort by increasing age
print @sorted[0..9];
}'
```' '\n' | head -n 10
GNU findを持っていて、他のGNUユーティリティを持っていない場合は、ヌルの代わりに改行をセパレータとして使用してください。
find . -type f -print |
python -c 'import os, sys; times = {}
for f in sys.stdin.readlines(): f = f[0:-1]; times[f] = os.stat(f).st_mtime
for f in (sorted(times.iterkeys(), key=lambda f:times[f], reverse=True))[:10]: print f'
Perlの場合(ここではファイル名に改行がないと仮定します):
0x1&
Pythonの場合(同じくファイル名に改行がないと仮定します):
0x1&
PHPでも同じようにする方法があると思いますが、私は知りません。
POSIXツールだけで作業したい場合は、もっと複雑になります; 更新日でソートされたファイルを再帰的にリストアップする方法 (statコマンドは利用できません!) (最初の10個を再調整するのは簡単な部分です) を参照してください。