发布网友 发布时间:2022-02-26 11:24
共5个回答
懂视网 时间:2022-02-26 15:45
Linux中find的使用法?
操作系统:centos7
软件版本 :find4.6
设备型号:ThinkPad E15
find命令用于查找指定目录下的文件,同时也可以调用其它命令执行相应的操作。
find语法格式:find 路径名称 选项
find命令选项:
-name 按照文件名查找文件。 “名称”
-perm 按照文件权限来查找文件。666 777 等
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-mtime -n / +n 按照文件的更改时间来查找文件,
- n 表示文件更改时间距现在n天以内
+ n 表示文件更改时间距现在n天以前
-type 查找某一类型的文件
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l- 符号链接文件
f - 普通文件
-size n 查找符合指定的文件大小的文件
-exec 对匹配的文件执行该参数所给出的其他linux命令, 相应命令的形式为' 命令 {} ;,注意{ }和 ;之间的空格,{}代表查到的内容
例1:查找当前目录下所有的TXT格式的文件
[root@xuegod63 ~]# touch a.txt xuegod.txt
[root@xuegod63 ~]# find . -name "*.txt"
。。。
./a.txt
./xuegod.txt
2、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项
mtime: 文件最后一次修改的时间
atime: 最后一次访问时间
ctime: 文件的最后一次变化时间,也就是修改时间
例1:在root目录下查找更改时间在1天以内,被黑客修改的文件
[root@xuegod63 ~]# find /root/ -mtime -1
对查找内容执行相应命令
-exec 这个选项参数后面可以跟自定义的SHELL命令,格式如下:
例2:把查找到的文件复制到一个指定的目录
[root@xuegod63 ~]# touch {1,2,3}.back
[root@xuegod63 mnt]# find /root -name "*.txt" -exec cp {} /opt ;
例3:查找多个类型文件
find命令中比较符的使用:
-a and 并且
-o or 或者
+ 超过
- 低于
[root@xuegod63 ~]# touch a.pdf back.sh
[root@xuegod63 ~]# find ./ -name "*.sh" -o -name "*.pdf"
[root@xuegod63 ~]# find /etc -size +20k -a -size -50k | wc -l
22
[root@xuegod63 ~]# find /etc -size +20k | wc -l
49
例4: 按权限查找:-perm
[root@xuegod63 ~]# find /bin/ -perm 755 # 等于0755权限的文件或目录
[root@xuegod63 ~]# find /bin/ -perm -4 #-perm -4 至少有4权限的文件或目录
例5:查找的目录深度:
-maxdepth 1 #只查找目录第一层的文件和目录
如:查找/bin目录下权限等于4的文件
[root@xuegod63 ~]# find /etc/ -maxdepth 1 -perm 4 | more
总结:find命令使用方法和参数
find命令选项:
-name 按照文件名查找文件。 “名称”
-perm 按照文件权限来查找文件。666 777 等
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-mtime -n / +n 按照文件的更改时间来查找文件,
- n 表示文件更改时间距现在n天以内
+ n 表示文件更改时间距现在n天以前
-type 查找某一类型的文件
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l- 符号链接文件
f - 普通文件
-size n 查找符合指定的文件大小的文件
-exec 对匹配的文件执行该参数所给出的其他linux命令, 相应命令的形式为' 命令 {} ;,注意{ }和 ;之间的空格,{}代表查到的内容
热心网友 时间:2022-02-26 12:53
直接用
find / -name '*aaa*'
这个命令表明了linux系统将在/下整个目录中查找所有的包含有aaa这3个字母的文件,比如 saaa,tibc.aaa等等符合条件的文件都能显示出来。如果你还知道这个文件是由 aaa这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name 'aaa*'追问我的意思是,假如linux系统中有很多文件,这些文件在不同的目录,但是所有文件中都含有"Hello"文字,想用一个命令把这些文件都找出。
追答哦,有很多方法的: find / -name "*" | xargs grep "Hello" 就可以
不过你最好还是定位一下,不然查询的时间会相当的长
比如,具体到目录,或定位到是以什么为后缀的文件
find /etc -name "*" | xargs grep "Hello"
或
find / -name "*.txt" | xargs grep "Hello"
热心网友 时间:2022-02-26 14:11
find / -maxdepth 2 -name "查找文件名" -exec grep -in "关键字" {} \;
热心网友 时间:2022-02-26 15:46
for file in $(find /)
do
if [[ $(grep STRING $file) ]]
then
echo $file
fi
done
这里的STRING就是要找的字符串,这截脚本来自某公司近期面试题。
只用grep会输出很多多余信息,这段脚本只输出包含指定字符串的文件的完整路径列表。
热心网友 时间:2022-02-26 17:37
find / -name