Using find command in Linux
Find becomes extremely useful when combined with other commands,
man find
info find
find . -type d -print #list directories
find . -type f -print #regular files
find . -type l -print #symbolic files
find . -name demo.sh
find . -iname demo.sh #case-insensitive search
find /home -iname demo.sh #both capital and small letters
find . -exec ls -ld {} \; #List out the found files
find . \( -name "*.mp4" -o -name "*.txt" \) -print
find /home/test -path "*/public/*" -print
find . -iregex ".*\(\.py\|\.sh\)$"
find . -type f -not -name "*.sh" #invert match
find . ! -name "*.txt" -print
find /tmp -type f -empty #find Empty files
find /tmp -type d -empty find #Empty directories
find /tmp -type f -name ".*" #find hidden files
find ./ -type f -name "ab.txt" -exec grep 'This' {} \; #print lines which have ‘This’
find ./test -name 'abc*' ! -name '*.php' #combine multiple search criteria
find -name '*.php' -o -name '*.txt'
find ./test ./dir2 -type f -name "abc*" #search multiple directories
find . -maxdepth 1 -name "f*" -print
find . -mindepth 2 -name "f*" -print
find . -type f -atime -7 -print #accessed in last 7 days
find . -type f -atime 7 -print #accessed in last 7th day
find . -type f -atime +7 -print #accessed older that 7 days
find / -mtime +7 –mtime -10 #modified 7 days back and less than 10 days
find / -cmin -60 #files which are changed in last 1 hour
find / -mmin -60 #the files which are modified in last 1 hour
find / -amin -60 #files which are accessed in last 1 hour
find . -type f -amin +7 -print #accessed in last 7 mins
find . -type f -newer cal_seq.sh -print #newer than a file
find . -type f -size +2k #file size
find / -size +50M -size -100M #greater than 50MB and less than 100MB
find . -type f -exec ls -s {} \; | sort -n -r | head -5 #find largest
find . -type f -exec ls -s {} \; | sort -n | head -5 #smallest file
find . -type f -name "a.txt" -exec cp {} test/ \; #find and move
find / -type f -size +100M -exec rm -f {} \; #find all 100MB files and delete
find / -type f -name *.mp3 -size +10M -exec rm {} \;#find all .mp3 & delete more than 10MB
find / -name name.txt -exec rm -i {} \; #delete a file with confirmation
find . -type f -name *.swp -delete #delete
find / -perm 1551 #sticky bit files
find / -perm /u=s #SUID
find / -perm /g=s #SGID
find / -perm /u=r #read only
find / -perm /a=x # executable
find /etc -maxdepth 1 -perm /u=r
find . -type f -perm 644 -print #permission
find / -type f ! -perm 777 #with out permission
find . -type f -name "*.php" ! -perm 644 -print #don't have permission levels
find / -type f -perm 0777 -print -exec chmod 644 {} \; #change permission
find . -type f -user root -print #find based on user
find /data -owner smith #find all files owned by smith
find /home -group developer #find based on group
find . -type f -user root -exec chown test {} \; #find and change ownership
find ./ -type f -exec sed -i 's/find/replace/g' {} \; #find and replace
find / -name \*.txt -exec sed -i "s/one/five/g" {} \;
find . -type f -name "*.c" -exec cat {} \;>all_c_files.txt #all .c to .txt
find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \; #cp 10 days old OLD dir
find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \; #list .txt
find / -type f -name "*.sh" -print0 | xargs -0 wc -l #cout no of lines
find . -type f -name "*.txt" -print0 | xargs -0 rm -f # remove files
find . -type f -name “*.java” | xargs tar cvf myfile.tar #find and tar files
Find becomes extremely useful when combined with other commands,
man find
info find
find . -type d -print #list directories
find . -type f -print #regular files
find . -type l -print #symbolic files
find . -name demo.sh
find . -iname demo.sh #case-insensitive search
find /home -iname demo.sh #both capital and small letters
find . -exec ls -ld {} \; #List out the found files
find . \( -name "*.mp4" -o -name "*.txt" \) -print
find /home/test -path "*/public/*" -print
find . -iregex ".*\(\.py\|\.sh\)$"
find . -type f -not -name "*.sh" #invert match
find . ! -name "*.txt" -print
find /tmp -type f -empty #find Empty files
find /tmp -type d -empty find #Empty directories
find /tmp -type f -name ".*" #find hidden files
find ./ -type f -name "ab.txt" -exec grep 'This' {} \; #print lines which have ‘This’
find ./test -name 'abc*' ! -name '*.php' #combine multiple search criteria
find -name '*.php' -o -name '*.txt'
find ./test ./dir2 -type f -name "abc*" #search multiple directories
find . -maxdepth 1 -name "f*" -print
find . -mindepth 2 -name "f*" -print
find . -type f -atime -7 -print #accessed in last 7 days
find . -type f -atime 7 -print #accessed in last 7th day
find . -type f -atime +7 -print #accessed older that 7 days
find / -mtime +7 –mtime -10 #modified 7 days back and less than 10 days
find / -cmin -60 #files which are changed in last 1 hour
find / -mmin -60 #the files which are modified in last 1 hour
find / -amin -60 #files which are accessed in last 1 hour
find . -type f -amin +7 -print #accessed in last 7 mins
find . -type f -newer cal_seq.sh -print #newer than a file
find . -type f -size +2k #file size
find / -size +50M -size -100M #greater than 50MB and less than 100MB
find . -type f -exec ls -s {} \; | sort -n -r | head -5 #find largest
find . -type f -exec ls -s {} \; | sort -n | head -5 #smallest file
find . -type f -name "a.txt" -exec cp {} test/ \; #find and move
find / -type f -size +100M -exec rm -f {} \; #find all 100MB files and delete
find / -type f -name *.mp3 -size +10M -exec rm {} \;#find all .mp3 & delete more than 10MB
find / -name name.txt -exec rm -i {} \; #delete a file with confirmation
find . -type f -name *.swp -delete #delete
find / -perm 1551 #sticky bit files
find / -perm /u=s #SUID
find / -perm /g=s #SGID
find / -perm /u=r #read only
find / -perm /a=x # executable
find /etc -maxdepth 1 -perm /u=r
find . -type f -perm 644 -print #permission
find / -type f ! -perm 777 #with out permission
find . -type f -name "*.php" ! -perm 644 -print #don't have permission levels
find / -type f -perm 0777 -print -exec chmod 644 {} \; #change permission
find . -type f -user root -print #find based on user
find /data -owner smith #find all files owned by smith
find /home -group developer #find based on group
find . -type f -user root -exec chown test {} \; #find and change ownership
find ./ -type f -exec sed -i 's/find/replace/g' {} \; #find and replace
find / -name \*.txt -exec sed -i "s/one/five/g" {} \;
find . -type f -name "*.c" -exec cat {} \;>all_c_files.txt #all .c to .txt
find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \; #cp 10 days old OLD dir
find . -type f -name "*.txt" -exec printf "Text file: %s\n" {} \; #list .txt
find / -type f -name "*.sh" -print0 | xargs -0 wc -l #cout no of lines
find . -type f -name "*.txt" -print0 | xargs -0 rm -f # remove files
find . -type f -name “*.java” | xargs tar cvf myfile.tar #find and tar files
find [paths] [expression] [actions] 2>/dev/null #finding error messages
find ~/documents -type f -name '*.txt' \ -exec grep -s DOGS {} \; -print #grep
#remove duplicate files
find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD
find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
#remove duplicate files
find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD
find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
No comments:
Post a Comment