Find Recent or Today’s Modified Files in Linux
In this article, we will explain two, simple command line tips that enable you to only list all today’s files.
One of the common problems Linux users encounter on the command line is locating files with a particular name, it can be much easier when you actually know the filename.
However, assuming that you have forgotten the name of a file that you created (in your home
folder which contains hundreds of files) at an earlier time during the day and yet you need to use urgently.
Below are different ways of only listing all files that you created or modified (directly or indirectly) today.
-a
– list all files including hidden files-l
– enables long listing format--time-style=FORMAT
– shows time in the specified FORMAT+%D
– show/use date in %m/%d/%y format
# ls -al --time-style=+%D | grep 'date +%D'
In addition, you can sort the resultant list alphabetically by including the -X
flag:
# ls -alX --time-style=+%D | grep 'date +%D'
You can also list based on size (largest first) using the -S
flag:
# ls -alS --time-style=+%D | grep 'date +%D'
2. Again, it is possible to use the find command which is practically more flexible and offers plenty of options than ls, for the same purpose as below.
-maxdepth
level is used to specify the level (in terms of sub-directories) below the starting point (current directory in this case) to which the search operation will be carried out.-newerXY
, this works if timestamp X of the file in question is newer than timestamp Y of the file reference. X and Y represent any of the letters below:- a – access time of the file reference
- B – birth time of the file reference
- c – inode status change time of reference
- m – modification time of the file reference
- t – reference is interpreted directly as a time
This means that, only files modified on 2016-12-06 will be considered:
# find . -maxdepth 1 -newermt "2016-12-06"
Important: Use the correct date format as reference in the find command above, once you use a wrong format, you will get an error as the one below:
# find . -maxdepth 1 -newermt "12-06-2016" find: I cannot figure out how to interpret '12-06-2016' as a date or time
Alternatively, use the correct formats below:
# find . -maxdepth 1 -newermt "12/06/2016" OR # find . -maxdepth 1 -newermt "12/06/16"
You can get more usage information for ls
and find
commands in our following series of articles on same.
source : http://www.tecmint.com/find-recent-modified-files-in-linux/