Table of Contents
$ find "${path}" -name "*.py"
$ find "${path}" -name "*code*"
$ find "${path}" -iname "*.py"
# b block
# c character
# d directory
# p named pipe
# f regular file
# l symbolic link
# s socket
# find regular file
$ find "${path}" -type f -name "*.py"
# find directory
$ find "${path}" -type d
# find files < 50M
$ find "${path}" -type f -size -50M
# find files > 50M
$ find "${path}" -type f -size +50M
# files are not accessed > 7 days
$ find "${path}" -type f -atime +7
# files are accessed < 7 days
$ find "${path}" -type f -atime -7
# files are not accessed > 10 min
$ find "${path}" -type f -amin +10
# files are accessed < 10 min
$ find "${path}" -type f -amin -10
$ find "${path}" -type f -user "${USER}"
# delete by pattern
$ find "${path}" -type f -name "*.sh" -delete
# delete recursively
find ker -type d -exec rm -rf {} \+
# ref: https://unix.stackexchange.com/questions/34325
find . -name "*.txt" -print0 | sort -z | xargs -r0 -I{} echo "{}"
# ref: https://stackoverflow.com/questions/9612090
# execute `echo` once for each file
find "${path}" -name "*.txt" -exec echo {} \;
# execute `echo` once with all the files
find "${path}" -name "*.txt" -exec echo {} +
# using while loop
find "${path}" -name "*.txt" -print0 | while IFS= read -r -d '' file; do
echo "$file"
done
# the above example will invoke a subshell, so if we have to set a variable,
# we can rewrite a while loop as following snippet
var=0
while IFS= read -r -d '' file; do
echo "${file}"
var=1
done < <(find . -print0)
echo "${var}"
# ref: https://unix.stackexchange.com/questions/9496
# https://askubuntu.com/questions/678915
$ find ker -type f -exec grep -rni "test" {} \+
# or
$ find ker -type f -exec grep -rni "test" {} \;