Difference between revisions of "Linux command: find"

From RHS Wiki
Jump to navigation Jump to search
Tag: visualeditor
Tag: visualeditor
 
Line 32: Line 32:
 
  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/ \;
 
  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 ===
+
===Exclude 2 extensions===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
find ./ ! -regex  '.*\(deb\|vmdk\)$'
 
find ./ ! -regex  '.*\(deb\|vmdk\)$'
 +
</syntaxhighlight>
 +
 +
=== Find video files ===
 +
<syntaxhighlight lang="bash">
 +
find . -regex  '.*\(avi\|mp4\|mkv\)$'
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
===Large Files===
 
===Large Files===
 
  find . -type f -size +10000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
 
  find . -type f -size +10000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'

Latest revision as of 21:51, 18 March 2020

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 }'