linux find 命令忽略某个或多个子目录的方法

本文介绍了Linux下find命令的高级应用技巧,包括如何排除指定目录进行文件搜索、按文件名搜索特定文件以及如何查找文件并搜索特定内容。通过实例展示了多个路径排除的方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux find 进行查找的时候,有时候需要忽略某些目录不查找,可以使用 -prune 参数来进行过滤,但必须要注意要忽略的路径参数必须紧跟着搜索的路径之后,否则该参数无法起作用。

以下是指定搜索/home/carryf目录下的所有文件,但是会忽略/home/carryf/astetc的路径:

find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -print

如果按照文件名来搜索则为:

find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -name "cdr_*.conf" -print

如果要忽略两个以上的路径如何处理?

find /home/carryf /( -path "/home/carryf/astetc" -o -path"/home/carryf/etc" /) -prune -o -type f  -print

find /home/carryf /( -path "/home/carryf/astetc" -o -path"/home/carryf/etc" /) -prune -o -type f  -name "cdr_*.conf" -print

注意/( 和/) 前后都有空格。

 查找某个文件包含内容,下面这个语句可以解决目录带空格的问题:

find ./ -name "mysql*" -print0  |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

如果目录不带空格,那么可以如下面的形式执行:

find ./ -name "mysql*"  |xargs  grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

<think>我们有两个主要任务:1.查看磁盘总容量和剩余空间(使用df命令)2.找出指定目录(通常是根目录当前目录)下占用空间最大的前十个目录文件(使用du命令结合排序)根据引用[3],我们可以使用`df -h`来查看磁盘总容量和剩余空间。根据引用[1]和[2],我们可以使用`du`命令来查看目录大小,并通过排序来得到最大的目录文件。具体步骤:一、查看磁盘总容量和剩余空间命令:`df -h`二、找出占用空间最大的目录文件1.进入目标目录,比如根目录`/`,者指定目录。2.使用`du`命令计算每个子目录文件的大小,然后排序取前10。注意:由于权限问题,可能需要使用`sudo`。推荐命令:```bash#查看当前目录下各个子目录/文件的大小(包括隐藏文件),并排序取前10du -ah .| sort-rh| head-n10者#仅查看当前目录下子目录(不包括文件)的大小,并排序取前10du -sh *| sort-rh| head-n10```但是,上述命令可能无法处理文件名中的空格等特殊字符,且`du -ah`会列出所有文件,可能会非常,导致排序慢。因此,我们更推荐使用:```bash#查找指定目录下(例如/)占用空间最大的前10个目录(不包括文件)sudo du-h/ |sort -rh |head -n10```者,如果我们想同时包含文件,并且希望更精确地控制深度(避免列出太层级),可以使用:```bash#查找指定目录下(例如/home)占用空间最大的前10个文件目录(深度为1)sudo du-h--max-depth=1 /home |sort -rh |head -n10```注意:`sort-rh`中的`-h`选项可以处理人类可读的大小(如1K,2M,3G),但需要确保你的sort版本支持(GNU sort支持)。如果系统不支持`-h`参数(如macOS的sort),则可以使用:```bashsudodu -k/ |sort -nr |head -n10```这样会以KB为单位,然后按数字倒序排列。三、综合步骤1.首先,使用`df-h`查看整体磁盘使用情况。2.然后,使用`du`命令找出占用空间最大的目录文件。四、注意事项-使用`sudo`是因为有些目录需要权限才能访问。-如果目录很大,`du`可能需要一些时间。因此,完整的回答如下:</think>### 📊 Linux 查看磁盘容量和空间占用分析指南 #### 🔍 一、查看磁盘总容量和剩余空间 ```bash df -h ``` - **作用**:显示所有挂载点的磁盘使用情况 - **输出字段**: - `Filesystem`:分区名称 - `Size`:总容量 - `Used`:已用空间 - `Avail`:可用空间 - `Use%`:使用百分比 - `Mounted on`:挂载路径 - **示例输出**: ``` Filesystem Size Used Avail Use% Mounted on /dev/sda1 98G 45G 48G 48% / /dev/sdb1 1.8T 1.2T 512G 70% /data ``` #### 📂 二、查找占用空间最大的目录/文件 ```mermaid graph TD A[目标目录] --> B[计算各目录大小] B --> C[按大小排序] C --> D[取前10名] ``` ##### 方法1:当前目录下前十大目录 ```bash du -h --max-depth=1 | sort -rh | head -n 10 ``` - **参数说明**: - `--max-depth=1`:只统计一级子目录 - `sort -rh`:按人类可读数值逆序排序 - `head -n 10`:取前10行 ##### 方法2:系统范围前十大目录(需root权限) ```bash sudo du -h / --max-depth=1 2>/dev/null | sort -rh | head -n 10 ``` - **注意**:`2>/dev/null` 用于忽略权限错误提示 ##### 方法3:精确查找前十大文件 ```bash sudo find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 10 ``` #### 🔧 三、实用组合命令 ##### 1. 分析指定目录(如/home)的空间占用 ```bash sudo du -h /home --max-depth=1 | sort -rh | head -n 10 ``` ##### 2. 可视化目录大小(需安装ncdu) ```bash sudo apt install ncdu ncdu / ``` - 交互式界面支持方向键导航和删除操作 ##### 3. 按文件类型统计空间 ```bash # 统计当前目录下各类文件占用空间 find . -type f -printf "%f %s\n" | awk '{ ext = $1; sub(/^.*\./, "", ext); size[$ext] += $2 } END { for (i in size) printf "%s\t%.2f MB\n", i, size[i]/1048576 }' | sort -k2 -nr ``` #### ⚠️ 四、注意事项 1. **权限问题**:系统目录需`sudo`权限 2. **排除挂载点**:使用`-x`参数避免跨文件系统统计 ```bash sudo du -h -x / --max-depth=1 ``` 3. **大目录处理**:对TB级目录添加`--time`参数查看耗时 ```bash time sudo du -sh /large_directory ``` #### 📊 五、输出结果示例 ``` 4.5G /var 3.2G /usr 1.8G /home 890M /opt 550M /etc 320M /tmp 120M /boot 85M /root 45M /bin 32M /sbin ``` > 关键技巧:**组合使用`du`的深度控制和`sort`的数值排序**可快速定位空间占用热点[^2]。对于生产环境,建议定期使用`ncdu`进行可视化分析[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值