find 命令
语法: find path 开关,参数,开关,参数
[yf@localhost ~]$ find / 2>/dev/null |wc -l
86294
[yf@localhost ~]$ find /etc -type d 2>/dev/null
[yf@localhost ~]$ find /etc -type f 2>/dev/null
[yf@localhost ~]$ (find /etc/ -type f -name "*conf" | xargs cat |wc -l ) 2>/dev/null
6395
[yf@localhost ~]$ (find /etc/ -type f -name "*conf" | xargs cat |wc -l) | xargs rm -f
参数:
-type: f,d,l,s
-name: conf , [0-9]m, ?m,
-size: 表示文件大小,M,K
+: +100m,大于100M
-:-20k,小于20k
[yf@localhost ~]$ find / -type f -size +100M 2>/dev/null
/proc/kcore
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/usr/lib/locale/locale-archive
/usr/lib/oracle/11.2/client64/lib/libociei.so
[yf@localhost ~]$ find / -type f -size +100M 2>/dev/null | xargs ls -l
-r--------. 1 root root 140737486266368 Dec 7 15:03 /proc/kcore
-rw-r--r--. 1 root root 106172832 Dec 27 2022 /usr/lib/locale/locale-archive
-rw-r--r--. 1 root root 118738042 Aug 25 2013 /usr/lib/oracle/11.2/client64/lib/libociei.so
-rw-r--r--. 1 root root 140219392 Nov 16 01:35 /var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
举例:
查找出/etc下大于10k以conf结尾的文件总共有多少个字符。
-mtime
-ctime
-atime
time结尾表示天数
m表示modify,c表示create,a表示access
+,表示多几天之前
-,表示几天之内
-mmin
-cmin
-amin
和上面一样,不过是分钟表示。
-delete: 表示把找到文件直接删除
-exec: 执行shell命令,同时使用{} 代替前面的每一行结果,并且需要使用 \;
进行结尾。
find . -type f -name "s*" -exec mv {} /tmp \;
find . -type f -exec mv {} "{}.bak" \;
举例:
求出大于5k的/etc/所有文件行数find /etc -type f -size +5k -exec cat {} \; | wc -l
把这些文件内容合并当前etc.txt文件find /etc -type f -size +5k -exec cat {} >>etc.txt \;
找出我一个星期之内C盘下载的高清视频,大小是1G以上,把这些复制到我的d:\backup
find /mnt/c -type f -size +1000M -name "*mp4" -exec mv {} /mnt/d/backup \;
-exec +号的用法
在 find
命令中,-exec
选项用于执行指定的命令。+
和 \;
是两种不同的终止符,用于控制 -exec
的行为。
+
的含义
使用 +
作为 -exec
选项的结束符,find
会尽可能地将多个匹配的文件传递给命令,而不是为每个文件单独执行一次命令。这种方式通常比使用 \;
更高效,因为它减少了命令执行的次数。
示例:
find /var/cache -name "*.cache" -atime +7 -exec rm {} +
{} +
:find
会将所有匹配的文件名一起传递给rm
命令。例如,如果找到三个文件file1.cache
、file2.cache
和file3.cache
,find
会构造一个命令类似于rm file1.cache file2.cache file3.cache
来删除这些文件。
\;
的含义
使用 \;
作为 -exec
选项的结束符,find
会对每个匹配的文件单独执行命令。这样每个文件都会单独触发一次命令执行,可能会导致效率较低。
示例:
find /var/cache -name "*.cache" -atime +7 -exec rm {} \;
{} \;
:find
会为每个匹配的文件单独执行一次rm
命令。例如,如果找到三个文件file1.cache
、file2.cache
和file3.cache
,find
会构造三个命令rm file1.cache
、rm file2.cache
和rm file3.cache
来删除这些文件。
总结
使用 +
让 find
将多个文件作为参数一次性传递给命令,这通常比逐个传递更高效。
查看文件的详细属性(stat)
-c: 后台格式化字符串
%s: size
%n: name
%i:inode节点号
find /etc -type f -name "*conf" -exec stat -c fname:%n,size:%s,inode:%i {} \; |column
查看未挂载磁盘及挂载磁盘 ( lsblk)
blk:block
lscpu
lspci
lsof
lsmod
[yf@localhost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 40G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─centos-root 253:0 0 38G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
查看磁盘的大小 (df)
[yf@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs 1.1G 0 1.1G 0% /dev/shm
tmpfs 1.1G 8.9M 1.1G 1% /run
tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/mapper/centos-root 38G 2.0G 37G 6% /
/dev/vda1 1014M 150M 865M 15% /boot
tmpfs 225M 0 225M 0% /run/user/1005
tmpfs 225M 0 225M 0% /run/user/1000
tmpfs 225M 0 225M 0% /run/user/1004
tmpfs 225M 0 225M 0% /run/user/0
tmpfs 225M 0 225M 0% /run/user/1001
[yf@localhost ~]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 1.1G 0 1.1G 0% /dev/shm
tmpfs tmpfs 1.1G 8.9M 1.1G 1% /run
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 38G 2.0G 37G 6% /
/dev/vda1 xfs 1014M 150M 865M 15% /boot
tmpfs tmpfs 225M 0 225M 0% /run/user/1005
tmpfs tmpfs 225M 0 225M 0% /run/user/1000
tmpfs tmpfs 225M 0 225M 0% /run/user/1004
tmpfs tmpfs 225M 0 225M 0% /run/user/0
tmpfs tmpfs 225M 0 225M 0% /run/user/1001
查看目录的占用的磁盘空间(du)
du
-s:summary
-h: human,友好显示
-m,k,g ,表示单位
练习:
1) 找出操作系统下最近10天的修改文件,并且文件大于10M
2) 找出本机上所有的图片
find / -name “*(png|jpeg)”
3) 找出大于10M文件,并且显示每个文件的名称和字节数
4) 查找/etc/所有的目录,并且统计每个目录的占用的磁盘大小。
file命令
查看文件的格式,编码和用途。
最后编辑:严锋 更新时间:2025-05-09 15:48