特定のディレクトリで最近アクセスしたファイルを見つける方法は?
このコマンドを使用すると、過去数分間に変更/アクセスされたすべてのファイルを一覧find
表示できます。n
しかし、私の場合、最後のファイルがいつ修正/アクセスされたのかわかりません。私にとって必要なのは、他のすべてのサブファイルまたはサブディレクトリにある最近アクセス/変更されたすべてのファイルを一覧表示することです。
それは可能ですか?
答え1
最後にアクセスした3つのファイルを印刷するには(最後にアクセスしたファイルから3番目から最後にアクセスしたファイルまで順に):
find . -type f -exec stat -c '%X %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
最後に変更された3つのファイルを印刷するには(最後に変更されたファイルから3番目から最後に変更されたファイルまで順に):
find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
find . -type f -exec stat -c '%X %n' {} \;
:現在のディレクトリ階層内の各ファイルの最後のアクセス時間とファイルパスを印刷します。find . -type f -exec stat -c '%Y %n' {} \;
:現在のディレクトリ階層にある各ファイルの最終変更時刻とファイルパスを印刷します。sort -nr
:数値を逆順に並べ替えます。cut -d' ' -f2-
:2番目のフィールドからスペースで区切られたすべてのフィールドを印刷します。awk 'NR==1,NR==3 {print}'
:#1〜3の範囲の行を印刷します。
3を希望のファイル数に変更して、表示するファイル数を変更できますawk 'NR==1,NR==3 {print}'
。
この回答はGNUバージョンに基づいているため、BSDベースのシステムのユーザーは関連するタイムスタンプを印刷できるようにコマンドのフォーマット文字列をstat
変更する必要があります。stat
~ % touch file\ 1
~ % touch file\ 2
~ % touch file\ 3
~ % find . -type f -exec stat -c '%X %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
./file 3
./file 2
./file 1
~ % find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
./file 3
./file 2
./file 1
~ % cat file\ 1
~ % find . -type f -exec stat -c '%X %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
./file 1
./file 3
./file 2
~ % find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
./file 3
./file 2
./file 1
~ % touch file\ 2
~ % find . -type f -exec stat -c '%X %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
./file 2
./file 1
./file 3
~ % find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | cut -d' ' -f2- | awk 'NR==1,NR==3 {print}'
./file 2
./file 3
./file 1
答え2
変更時間に基づいて特定のディレクトリ内のファイルを並べ替えるには(最新のものから):
ls -t
接続時間で並べ替えるには、この-u
オプションを追加してください。
ls -tu
しかし注意してください最新のLinuxシステムは、デフォルトでは正確なアクセス時間を追跡しません。。したがって、アクセスタイムスタンプは信頼できません。
ディレクトリツリー(サブディレクトリを含む)で最新のファイルを見つけるには、最も簡単な方法はzshを使用することです。グローバル予選。
print -lr -- **/*(om)
oa
代わりにom
変更時間の代わりにアクセス時間を使用してください。たとえば、10の最新ファイルをインポートするなど、一致を制限できます。
print -lr -- **/*(om[1,10])
隠しファイルはスキップされます。隠しファイルも考慮するには、D
glob修飾子を追加してください。また.
、考慮するためにglob修飾子を追加することもできます。定期的なファイル(シンボリックリンク、ディレクトリ、fifosなどは計算されません)およびmm-60
/またはmh-1
過去1時間以内に最後に変更されたファイルに制限されます。
答え3
再帰スイッチ(-R
)、ls
時間別ソートスイッチ(-t
)、およびリバースソートスイッチ(-r
)を使用して、ディレクトリツリー内のすべてのファイルを一覧表示できます。これにより、サブディレクトリのアクセス/変更日ごとにすべてのファイルがソートされるわけではありませんが、各サブディレクトリはその日付で個別にソートされます。
次のコマンドを使用してくださいls -ltrR <sometopdir>
。
はい
$ ls -ltrR .
total 759720
-rw-r-----@ 1 sammingolelli staff 2514441 Mar 31 2015 restfulapi-120704053212-phpapp01.pdf
-rw-r-----@ 1 sammingolelli staff 567808 Apr 7 2015 USGCB-Windows-Settings.xls
-rw-r-----@ 1 sammingolelli staff 180736 Apr 7 2015 USGCB-RHEL5-Desktop-Settings-Version-1.2.5.0.xls
-rw-r-----@ 1 sammingolelli staff 6474 Apr 8 2015 tap_kp_mavericks.txt
./kerberos:
total 5464
-rw-r-----@ 1 sammingolelli staff 37317 Oct 2 13:03 Set_up_Kerberos_instruction_d8.docx
-rw-r-----@ 1 sammingolelli staff 2753195 Oct 13 13:49 Keberos configuration with AD 01_09_2014.pdf
./homestarrunner:
total 10624
-rw-rw-rw-@ 1 sammingolelli staff 319422 May 10 2000 error_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 53499 Jun 8 2001 sb_duck.mp3
-rw-rw-rw-@ 1 sammingolelli staff 199254 Mar 11 2002 email_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 39288 Mar 25 2002 bubs_dontutalk.mp3
-rw-rw-rw-@ 1 sammingolelli staff 75432 May 6 2002 trash_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 298946 Dec 1 2002 error_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 298686 Dec 1 2002 startup_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 90279 Dec 1 2002 sb_meedlymee.mp3
-rw-rw-rw-@ 1 sammingolelli staff 73561 Dec 1 2002 sb_dubdeuce.mp3
-rw-rw-rw-@ 1 sammingolelli staff 193097 Dec 1 2002 sb_pizza.mp3
-rw-rw-rw-@ 1 sammingolelli staff 30093 Dec 1 2002 sb_stiny.mp3
-rw-rw-rw-@ 1 sammingolelli staff 61858 Dec 1 2002 ss_sadflying.mp3
-rw-rw-rw-@ 1 sammingolelli staff 150142 Dec 1 2002 email_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 68545 Dec 1 2002 bubs_grabbinbutt.mp3
-rw-rw-rw-@ 1 sammingolelli staff 61022 Dec 1 2002 cz_jeorghb.mp3
-rw-rw-rw-@ 1 sammingolelli staff 40124 Dec 1 2002 marzy_nasty.mp3
-rw-rw-rw-@ 1 sammingolelli staff 224116 Dec 1 2002 shutdown_sb.wav
-rw-rw-rw-@ 1 sammingolelli staff 260546 Dec 1 2002 shutdown_hs.wav
-rw-rw-rw-@ 1 sammingolelli staff 57686 Dec 1 2002 trash_hs.wav
答え4
ファイルツリー内の場所に関係なく、「最近の」ファイル全体のセットをアクセス/変更時間でソートしますか?
これを行う1つの方法は、結果を使用してstat
各ファイルの修正時間を印刷し、結果に修正時間を印刷することです。sort
cut
名前に改行が含まれているファイルの場合は中断されますが、他のファイルの場合は、過去60分間に変更されたファイルを最後に変更されたものから順に一覧表示するソリューションがあります。
find . -type f -mmin -60 -exec stat -c $'%Y\t%n' {} + | sort -nr | cut -f2-