Linux command to find files changed in the last n seconds
I would like a Linux command to find files changed in the last n
seconds.
Is there a shell script or other tool that I can run from command line interface or GUI?
The solution with mtime specifying seconds doesn't work on my linux systems that use find --version
== find (GNU findutils) 4.4.2
.
I get the following error:
mycomputer:~/new$ find . -mtime -60s
find: missing argument to `-mtime'
mycomputer:~/new$ find . -mtime -60seconds
find: missing argument to `-mtime'
However, I can use -mmin
(for modified in the last m minutes), and can it can take in a decimal argument; e.g., the following finds files modified in the last 30 seconds.
find . -mmin 0.5
So for example; creating files last modified 1s, 6s, 11s, ... ago for the past 120 seconds, this command finds:
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
So if you really need it in seconds you can do something like:
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
Use find command like this:
find . -name "*.txt" -mtime -60s
To find all *.txt
files modified in last 60 seconds.