大佬教程收集整理的这篇文章主要介绍了find用法详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<strong>命令选项:< /strong >
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件 【-7 7天之内 +7 7天前】
-nogroup 查找无效属组的文件,即该文件所属的组在 /etc/groups 中不存在。
-nouser 查找无效属主的文件,即该文件的属主在 /etc/passwd 中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
- type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-follow:如果 find 命令遇到符号链接文件,就跟踪至链接所指向的文件。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
|
查找普通文件/目录
1
2
|
find
/home/omd
-
type
f (普通文件)
find
/home/omd
-
type
d (查询目录)
|
只显示1级目录文件且过滤自身
1
|
find
./ -maxdepth 1 -
type
d ! -name
"hhh"
|
查找一天内被访问过(access)的文件
1
|
find
/home/omd/
-atime -1 -
type
f
|
查询inode相同的文件
1
|
find
/ -inum inode数字
|
除了某个文件以为,其余的均删除
1
2
|
find
/home/omd/
-
type
f ! -name h.txt |
xargs
rm
–f
ls
|
grep
-
v
"h.txt"
|
xargs
rm
-rf (与上面类似,删除除了某个文件外的所有文件)
|
删除目录下所有文件
1
2
|
find
/tmp/
-
type
f -
exec
rm
-rf {} \;
find
/tmp/
-
type
f |
xargs
rm
-rf
|
查看当前路径下所有文件的信息:
1
2
|
find
/tmp/
-
type
f ! -name a |
xargs
rm
–rf
find
./ -
type
f -
exec
file
{} \;
|
查找指定时间内修改过的文件
1
2
3
4
5
6
7
8
9
10
|
# 当前路径下访问文件超过2分钟文件
find
./ -amin +2
# 当前路径下访问文件刚好2分钟的文件
find
./ -amin 2
find
./ -cmin +2
find
./ -mmin +2
find
./ -mtime +2
find
./ -ctime +2
find
./ -mtime +2
find
./ -ctime +2
|
1
2
3
4
|
find
/ -ctime +20 最近修改文件时间20分钟以前
find
/ -mtime +7 修改文件为7天之前的(最重要)
find
/ -mtime 7 修改文件为第7天,就是往前推7天
find
/ -mtime -7 修改文件为7天之内的
|
按照目录或文件的权限来查找文件
1
|
find
/opt
-perm 777
|
按大小查找文件
1
2
3
|
find
/ -size +10M |
sort
【查找大于10M的文件】
find
/ -size -10M |
sort
【查找小于10M的文件】
find
/ -size 10M |
sort
【查找10M的文件】
|
在test 目录下查找不在test4子目录之内的所有文件
1
2
|
find
.
/test
-path
"test/test4"
-prune -o -print
【可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被
find
命令忽略】
|
查找比yum.log 但不比hhh.txt新的文件
1
|
[[email protected] ftl]
# find / newer /var/log/yum.log ! -newer ./hhh.txt
|
查找更改时间在比log2012.log文件新的文件
1
|
find
./ -newer log2012.log
|
在当前目录下查找文件长度大于1 M字节的文件
1
2
|
find
./ -size +1000000c –print
find
./ –size +1M -print
|
在/home/apache目录下查找文件长度恰好为100字节的文件:
1
|
find
/home/apache
-size 100c -print
|
在当前目录下查找长度超过10块的文件
1
|
find
. -size 10 –print
|
1
|
|
其他命令:
1
2
3
4
5
6
7
|
find
/home/omd/
-name *.txt |
while
read
line;
do
cp
$line
/home/omd/h
;
done
for
name
in
`chkconfig |
grep
3:on |
awk
‘{print $1}‘
` ;
do
echo
$name >> h.txt;
done
;
find
/home/omd/
-name *.txt |
xargs
-i
cp
{}
/home/omd/h
cat
/home/omd/h/he
.txt |
while
read
line;
do
echo
$line >>
/home/omd/h
.txt ;
done
;
cat
/home/omd/h
.txt |
awk
‘BEGIN{print "Name "} {print $1}‘
cat
/home/omd/h
.txt |
xargs
-I {}
cat
{}
find
. -name
"*.txt"
|
xargs
sed
-i
‘s/hhhh/\hHHh/g‘
|
ls -l命令放在find命令的-exec选项中
1
|
find
. -
type
f -
exec
ls
-l {} \; 【{} 花括号代表前面
find
查找出来的文件名】
|
在目录中查找更改时间在n日以前的文件并删除它们
1
|
find
./ -mtime +10 -
exec
rm
{} \;
|
在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示
1
|
find
/ -mtime +1 -a -name
"*.log"
-
type
f -ok
cp
{}
/tmp/ftl
\; 【-ok是安全模式,根
exec
效果同】
|
-exec中使用grep命令
1
|
find
/etc
-name
"passwd*"
-
exec
grep
"root"
{} \; 【过滤文件内容用】
|
查找文件移动到指定目录
1
|
find
. -name
"*.log"
-
exec
mv
{} .. \;
|
用exec选项执行cp命令
1
|
find
. -name
"*.log"
-
exec
cp
{} test3 \;
|
用xargs选项执行cp命令
1
|
find /root -name “*txt” | xargs rm -rf
|
-exec
1.参数是一个一个传递的,传递一个参数执行一次rm
2.文件名有空格等特殊字符也能处理
-xargs
1.一次将参数传给命令,可以使用-n控制参数个数
2.处理特殊文件名需要采用如下方式:
find . -name "*.txt" print0 |xargs -0 rm {}
以上是大佬教程为你收集整理的find用法详解全部内容,希望文章能够帮你解决find用法详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。