前言:
今天各位老铁们对“apachehome目录在哪”大体比较看重,我们都想要剖析一些“apachehome目录在哪”的相关内容。那么小编也在网摘上收集了一些有关“apachehome目录在哪””的相关知识,希望大家能喜欢,姐妹们快快来了解一下吧!Find语法格式:
find path -option [ -print ] [ -exec -ok command ] {} \;
解释:
Path: find命令所查找的目录路径
print:表示将结果输出到标准输出。
exec:对匹配的文件执行该参数所给出的shell命令。形式为command {} \;,注意{}与\;之间有空格
ok:与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
Option:
一、-a与-o的困惑
实例:find /test -path "/test/aaa" -a -prune -o -print
解释:查询/test目录,但忽略/test 下得aaa子目录
我们知道,path指定了某个目录,使用prune则跳过该目录,不会对该目录下的子目录及文件进行查找。但这里-a 与-o比较困惑,您可以测试下:
find /test -path "/test/aaa" -a -prune -a -print
可能会更困惑,为什么返回值只有/test/aaa?不是说-prune会跳过/test/aaa目录?下面将详细谈谈。
本例find会对/test的所有目录(文件)执行一系列的条件约束,如 -path “/test/aaa” 就是一个条件约束,其作用是/test的每个目录(文件)逐个去匹配其路径是否与/test/aaa相同,若相同则返回true,否则返回false,当执行完这个约束后,会根据后面是-a还是-o来推进。
-a类似“逻辑AND”,若先前的条件约束返回false,则-a后续不会执行(遵循短路策略),若返回true,则-a后续会执行-prune,-prune会跳过这个目录(即忽略/test/aaa目录)。
也就是说当查询到/test/bbb这样的目录时,-path “/test/aaa”与其不匹配,返回false,因此-a -prune -a -print也就不会执行,只有恰好查询到/test/aaa目录时,-path “/test/aaa”与其匹配,返回true,这样-a -prune -a print才会执行,因此find /test -path "/test/aaa" -a -prune -a -print就只会显示/test/aaa。
-o类似“逻辑OR”,即便之前条件约束返回false,-o也会执行,因此print前应使用-o,这样所有不是/test/aaa目录(文件)都print出来。
注意:-a是可以省略的,默认逻辑。
二、常见的一些print操作实例
1.查询/home/apache目录中文件长度小于100字节的文件:
find /home/apache -size -100c -print
2.查找大于100M小于200M的文件,支持[k,M,G]
find ./ -size +100M -size -200M -print
3.查找大于10块的文件,默认1块=512字节
find ~ -size +10 -print
4.在除了a、b目录以外的目录下查找.sh后缀文件
find ./ \( -path './a' -o -path './b' \) -a -prune -o -name *.sh -print
注意:圆括号()表示表达式的结合。即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。由于命令行不能直接使用圆括号,所以需要用反斜杠'\'进行转意(即'\'转意字符使命令行认识圆括号)。同时注意'\(','\)'两边都需空格。
5.在自己的根目录$HOME中查找文件名符合*.log的文件
find ~ -name "*.log" -print
6.查询开头字母为大写的文件:
find . -name "[A-Z]*" -print
7.查询开头字母是小写,最后是1到9加上.log结束的文件:
find . -name "[a-z]*[1-9].log" -print
8.查询权限是755的文件
find . -perm 755 -print
9.查询文件属主为root的文件:
find ~ -user root -print
10.查询属主帐户已经被删除的文件
find /home -nouser -print
11.查询更改时间在5日以内的文件:
find / -mtime -5 -print
12.查询更改时间在3日以前的文件:
find / -mtime +3 -print
13.查询更改时间比文件log_20210305新但比文件log_20210404旧的文件。!是逻辑非符号
find / -newer log_20210305 ! -newer log_20210404
14.只查询/etc路径下的所有目录
find /etc -type d -print
15.使用find命令时,可能希望先查询本级目录下的所有文件,然后再在其子目录中查找。使用depth选项即可。这样做的一个深层次原因:当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
查找一个名为netconfig.log的文件。
find / -name "netconfig.log" -depth -print
16.在当前的文件系统中查找文件(不进入其他文件系统),使用mount
find . -name "*.log" -mount -print
三、常见的一些exec/ok操作实例
exec选项后面跟随着所要执行的命令或脚本,然后是{ }、空格、\;
{}花括号代表前面find查找出来的文件名,因此要注意{}使用的位置。
1.执行ls -l
find . -type f -exec ls -l {} \;
2.查找当前目录下,24小时内更改过的文件,并进行删除操作(删除没有提示,谨慎使用)
find . -type f -mtime -1 -exec rm {} \;
3.查找当前目录下的jpg文件,若24小时内曾更改过,则进行删除,-ok会在删除前会进行询问。
find . -name "*.jpg" -mtime -1 -ok rm {} \;
4.查找当前目录下,将jpg文件复制到/home/stt/jpg/目录中
find . -name “*.jpg” -exec copy -r {} /home/stt/jpg/ \;
标签: #apachehome目录在哪