Linux command: find

From RHS Wiki
Revision as of 21:51, 18 March 2020 by Rafahsolis (talk | contribs) (→‎Exclude 2 extensions)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

find files

find <path> -name <filename>

find files modified in the last 24h

find <path> -mtime -1 -ls

Last 3 accessed files

find . -type f -exec stat -c '%X %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'

Last 3 modified files

find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'
  • find . -type f -exec stat -c '%X %n' *: prints the last access' time followed by the file's path for each file in the current directory hierarchy;
  • find . -type f -exec stat -c '%Y %n' *: prints the last modification's time followed by the file's path for each file in the current directory hierarchy;
  • sort -nr: sorts in an inverse numerical order;
  • awk 'NR==1,NR==3 {print $2}': prints the second field of the first, second and third line.

You can change the number of files to be shown by changing 3 to the desired number of files in awk 'NR==1,NR==3 {print $2}'.

find case insensitive

find . -iname "fileName.txt"

find video files

find . -type f -exec file -N -i -- {} + | grep video

or if you only want the filenames ...

find . -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p'

Exclude extension

find Vídeos/popcorntime/ -type f -not -name "*.torrent" -not -name "*.jpg" -not -name "*.srt" -not -name "*.txt" -exec mv "{}" /media/rafa/HM_030/video/ \;

Exclude 2 extensions

find ./ ! -regex  '.*\(deb\|vmdk\)$'

Find video files

find . -regex  '.*\(avi\|mp4\|mkv\)$'

Large Files

find . -type f -size +10000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'