最後のn
数秒で変更されたファイルを見つけるためのLinuxコマンドが欲しい。
コマンドラインインターフェイスまたはGUIから実行できるシェルスクリプトまたは他のツールはありますか?
最後のn
数秒で変更されたファイルを見つけるためのLinuxコマンドが欲しい。
コマンドラインインターフェイスまたはGUIから実行できるシェルスクリプトまたは他のツールはありますか?
回答:
次のような検索コマンドを使用します。
find . -name "*.txt" -mtime -60s
*.txt
直前の60秒間に変更されたすべてのファイルを見つける。
-mtime
。POSIXやGNU findで有効なオプションである「60年代」でもありません。引数-mtime
は、ファイルが変更された24時間前の数を指定する数値です。
秒を指定するmtimeを使用したソリューションは、find --version
== を使用するLinuxシステムでは機能しませんfind (GNU findutils) 4.4.2
。
次のエラーが表示されます。
mycomputer:~/new$ find . -mtime -60s
find: missing argument to `-mtime'
mycomputer:~/new$ find . -mtime -60seconds
find: missing argument to `-mtime'
ただし、-mmin
(最後のm分で変更された)を使用でき、10進数の引数を使用できます。たとえば、次の例では、最後の30秒間に変更されたファイルが検出されます。
find . -mmin 0.5
たとえば、過去120秒間に1秒、6秒、11秒、...の最後に変更されたファイルを作成すると、このコマンドは以下を検出します。
mycomputer:~/new$ for i in $(seq 1 5 120); do touch -d "-$i seconds" last_modified_${i}_seconds_ago ; done
mycomputer:~/new$ find . -mmin 0.5
.
./last_modified_1_seconds_ago
./last_modified_26_seconds_ago
./last_modified_11_seconds_ago
./last_modified_16_seconds_ago
./last_modified_21_seconds_ago
./last_modified_6_seconds_ago
したがって、数秒で本当に必要な場合は、次のようなことができます:
localhost:~/new$ for i in $(seq 1 1 120); do touch -d "-$i seconds" last_modified_${i}_seconds_ago ; done
localhost:~/new$ N=18; find . -mmin $(echo "$N/60"|bc -l)
./last_modified_1_seconds_ago
./last_modified_9_seconds_ago
./last_modified_14_seconds_ago
./last_modified_4_seconds_ago
./last_modified_12_seconds_ago
./last_modified_13_seconds_ago
./last_modified_8_seconds_ago
./last_modified_3_seconds_ago
./last_modified_5_seconds_ago
./last_modified_11_seconds_ago
./last_modified_17_seconds_ago
./last_modified_16_seconds_ago
./last_modified_7_seconds_ago
./last_modified_15_seconds_ago
./last_modified_10_seconds_ago
./last_modified_6_seconds_ago
./last_modified_2_seconds_ago
これを行う最も簡単な方法は次のとおりです。
find . -name "*.txt" -newermt '6 seconds ago'
-mtime -60s
多くのバージョンでは動作しません答えに言及したオプション、find
でも2016年には、-newermt
私たちに多くの良いオプションです。多くの異なる日付と時刻の形式を解析できます。
mmin
これを使用する代替方法は次のとおりです。
find . -name "*.txt" -mmin -0.5
# Finds files modified within the last 0.5 minute, i.e. last 30 seconds
このオプションは、すべてのfind
バージョンで機能するとは限りません。
ファイルの変更をディレクトリで監視している場合、無限ポーリングループの代わりにinotify-toolsを使用することをお勧めします。
find: missing argument to `-mtime'
。ただし、-mminと10進数の引数を使用して、目的の動作を実現できます。s
引数として使用するための検索に関するマンページで参照を見つけることができませんでした。