Recipe: Finding files and file listing

Current directory listing
=========================
$ find . -print

Parent directory listing
========================
$ find .. -print

Search upon file name or regex match
====================================
$ find /home/slynux -name "*.txt" -print

$ find . \( -name "*.txt" -o -name "*.pdf" \) -print # Combine multiple -name

$ find /home/users -path "slynux" -print # Path contain slynux

$ find . -regex ".*\(\.py\|\.sh\)$" # Regular expression match

Negation of argument
====================
$ find . ! -name "*.txt" -print

Depth parameters
================
$ find . -type f -maxdepth 1 -print
#Lists all the regular files only from current directory. If there are subdirectories they are not printed or traversed.


$ find . -type f -mindepth 2
./dir1/dir2/file1
./dir3/dir4/f2
# Even if there are files in current directory or dir1 and dir3, it will not be printed.

filetype parameter
==================
$ find . -type d -print #Directories

$ find . -type f -print #Regular files

$ find . -type l #Symlinks

time parameters
===============
$ find . -type f -atime -7 -print
$ find . -type f -atime 7 -print
$ find . -type f -atime +7 -print


$ find . -type f -newer file.txt -print

file size parameter
===================
$ find . -type f -size +2k
# Files having size greater than 2 kilobytes

$ find . -type f -size -2k
# Files having size less than 2 kilobytes

$ find . -type f -size 2k
# Files having size 2 kilobytes

-delete parameter
=================
$ find . -type f -name *.swp" -delete

permissions parameter
=====================
$ find . -type f -perm 644 -print
# Print files having permission 644


-exec parameter
===============
$ find . -type f -name "*.c" -exec cat {} \; > all_c_files.txt

$ find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD  \;

$ find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \;

Skip specfied directories -prune
================================
$ find devel/source_path  \( -name ".git" -prune \) -o \( -type -print \)
# Instead of \( -type f -print \), use required filter


