find命令相关技巧

限定一个文件系统中查找文件

find 命令增加 -xdev 参数即可限定只查找一个文件系统:

find ./ -xdev

du 命令统计大小限定一个文件系统

du 命令统计目录大小时默认会累积目录下所有文件,即使是挂载上的其它文件系统也会被计算进来,增加 -x 也就是 --one-file-system 参数就可以进行限定:

du -xsh xxx/

查找指向某个文件的所有符号链接

-L 参数指定查找的目录:

~# find -L /dev/disk/by-id -samefile /dev/sdb

find 命令清除文件 SELinux 信息

Linux 系统开启 SELinux 之后文件中可能通过 xattr 保存 SELinux 的 security context 信息,可以通过 ls -l 命令查看确认:

[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1867  7月  5 2011 anaconda-ks.cfg

上面的权限输出中最后一个 '.' 就表示文件带有 SELinux 安全上下文信息,可以使用 setfattr 命令清除。

当然也可以结合 findsetfattr 命令自动查找清除某个目录下所有文件的 SELinux 信息:

find ./ -printf "%P\t%Z\n" 2>/dev/null | awk -F "\t" '{if (NF>1 && length($2) > 0) {print $1;}}' | xargs setfattr -x security.selinux

查找空目录并删除

~# find ./ -type d -empty -delete