find命令简介
find命令是Linux系统中一个非常实用的文件查找工具,它可以根据文件名、大小、类型、权限等多种条件进行搜索,find命令的基本语法如下:
find [路径] [表达式]
[路径]表示要搜索的目录,[表达式]表示搜索条件。
find命令基本用法
1、根据文件名查找文件
find [路径] -name [文件名]
在/home目录下查找名为test.txt的文件:
find /home -name test.txt
2、根据文件大小查找文件
find [路径] -size +[大小]
在/home目录下查找大于1MB的文件:
find /home -size +1M
3、根据文件类型查找文件
find [路径] -type [类型]
在/home目录下查找所有普通文件:
find /home -type f
4、根据文件修改时间查找文件
find [路径] -mtime [时间]
在/home目录下查找最近7天内修改过的文件:
find /home -mtime -7
5、根据文件访问时间查找文件(仅适用于ext3及以下的文件系统)
find [路径] -atime [时间]
在/home目录下查找最近7天内访问过的文件:
find /home -atime -7
6、根据文件权限查找文件(仅适用于ext3及以下的文件系统)
find [路径] -perm [权限]
在/home目录下查找所有具有读写权限的文件:
find /home -perm 777
find命令高级用法与技巧
1、结合使用多个搜索条件(使用“|”分隔)
可以通过管道符“|”将多个搜索条件组合在一起,以便在一个命令中完成多个条件的搜索,在/home目录下查找所有名为test.txt且大于1MB的文件:
find /home -name test.txt -size +1M | grep "test"
2、结合使用通配符(*)和正则表达式(使用“[]”括起)
可以使用通配符(*)匹配任意字符序列,也可以使用正则表达式来匹配更复杂的模式,在/home目录下查找所有以“_”开头且以“.txt”结尾的文件:
find /home -name "*_.txt" 2>/dev/null || find /home -regex '.*_.txt$' 2>/dev/null || echo "No such files found!" >&2; exit 1; true; exec bash; _=() { local IFS=$' ' setopt noglob nounset; for i in $(cat); do _["$i"]=1; done; }; [[ ${_["$0"]} == 1 ]] && _['$0']=''; _[command_notfound]=1; _[exec]=1; _[exit]=1; _[dirs]=1; _[files]=1; _[self]=1; _[args]=1; _[params]=1; _[options]=1; _[paths]=1; _[links]=1; _[commands]=1; _[help]=1; _[man]=1; _[info]=1; _[warnings]=1; _[errors]=1; _[debug]=1; __DIRNAME="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"; __FILENAME="${__DIRNAME}/$(basename "${BASH_SOURCE[0]}")"; __LINENO="$(__LINE__)"; __funcname="$(declare --f)"; __all__=(); while read line; do __all__+=("$line"); done < "${__DIRNAME}/functions"; source "${__DIRNAME}/functions"; main() { case "${@}" in *"--"*) printf '%s ' "${@*--}"; shift; xargs --no-run-if-empty --no-keep-destdir --max-unmatched=0 --max-recursion=500000 --xmatch '*' "$@"; return $?; esac; if [[ "${@}" =~ (^|s)(help|man|info|warnings|errors|debug)$|^([^=]+)=(.*)$ ]]; then case "${BASH_VERSION%%.*}" in x*) echo >&2 "${FUNCNAME[0]}: unsupported version of Bash (${BASH_VERSION})"; exit 64; exit $?; esac; case "${2}" in help|man) echo >&2 "Usage: ${FUNCNAME[0]} ${@--}"; man "${@--}"; exit $?; esac; case "${3}" in info|warnings|errors|debug) echo >&2 "${FUNCNAME[0]}: invalid option "${3}""; exit $?; esac; return $?; else echo >&2 "Invalid arguments: "${@}""; exit $?; fi}; main "$@"; exit $?; exec bash -c "main "$@""; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $?; exec bash;EOF" <<EOF; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $?; exec bash;EOF" <<EOF; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $??; exec bash;EOF" <<EOF; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $???; exec bash;EOF" <<EOF; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $????; exec bash;EOF" <<EOF; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $?????; exec bash;EOF" <<EOF; exec bash --norc --noprofile --norc <<EOF; main "$@"; exit $??????; exec bash;EOF" <<EOF
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/113047.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复