Linux find/whereis/watch/ws/wc 命令使用大全与实操技巧

适配系统:Ubuntu等Debian系Linux

适用场景:纯终端操作、服务器运维、批量管理、实时监控、文本统计

文档说明:全命令覆盖核心用法+实操案例+高频技巧+避坑点+联动用法,附速查备忘可直接复制使用

一、find 命令:文件/目录精准查找(运维核心)

核心用途

名称、类型、大小、时间、权限等多条件遍历查找文件/目录,支持对结果直接执行批量操作,是Linux最灵活的查找工具,适配自定义文件/目录的精准检索。

基础语法


find [查找路径] [查找条件] [执行动作]
# 路径:绝对路径(/home/xxx) / 相对路径(./),默认当前目录;动作默认输出路径

常用查找条件(高频必记)

条件参数 说明 实操案例
-name 文件名 按名精准查找(区分大小写,支持通配符*) find /root -name "test.sh"
-iname 文件名 按名查找(不区分大小写) find ./ -iname "Test.SH"
-type 类型 按类型查找(f=文件 d=目录 l=软链接) find /usr -type d -name "bin"
-size 大小 按大小查找(+n>n -n<n,单位k/M/G) find /var -size +100M
-mtime 天数 按修改时间查找(+n超n天 -n=n天内) find ./ -type f -mtime -7
-user 用户名 按所属用户查找 find /home -user root
-perm 权限 按权限查找(数字/符号权限均可) find /bin -perm 755

高频执行动作(查找后直接操作)


# 1. 批量删除(清理30天前日志,最常用)
find ./ -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
# 2. 批量修改权限(给/opt下sh文件加执行权限)
find /opt -type f -name "*.sh" -exec chmod +x {} \;
# 3. 执行前确认(避免误删,逐个y/n确认)
find ./ -size +500M -ok rm -rf {} \;
# 4. 结果重定向(保存查找结果到文件,便于后续处理)
find /data -size +10M > /tmp/large_file_list.txt

实用技巧

  1. 多条件组合:与(默认拼接)、或(-o)、非(!

  2. 限定查找深度(提升速度,避免遍历全目录)

  3. 替代-exec(更高效):结合xargs批量操作

  4. 清理空文件/目录

避坑点

  1. 遍历根目录find /时,加2>/dev/null屏蔽系统目录权限报错;

  2. -exec后必须跟{};;前有空格,缺一不可;

  3. 批量操作大文件时,xargs-exec执行效率更高。

二、whereis 命令:系统命令快速查找(轻量高效)

核心用途

快速查找系统内置命令/可执行程序二进制文件、帮助文档、源码文件路径,无需遍历目录,速度远快于find,仅适用于系统自带命令

基础语法


whereis [选项] 命令/程序名

常用选项与实操案例

选项 说明 实操案例 典型输出
无选项 查找二进制+源码+帮助文档 whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
-b 仅查找二进制文件(最常用) whereis -b python3 python3: /usr/bin/python3 /usr/bin/python3.10
-m 仅查找帮助文档(man路径) whereis -m find find: /usr/share/man/man1/find.1.gz
-s 仅查找源码文件(系统命令多无源码) whereis -s ls ls:(无结果)

实用技巧

  1. 批量查找多个命令(一次执行,无需重复敲命令)

  2. 与which联动(确认当前终端实际使用的命令路径)

  3. 排查命令是否安装(输出空则未安装系统内置版)

避坑点

  1. 不支持自定义文件/脚本查找,仅适用于系统内置命令;

  2. 查找结果多路径代表存在多版本,用which 命令确认当前生效版本。

三、watch 命令:终端实时监控(无GUI监控必备)

核心用途

按指定间隔重复执行命令,全屏动态刷新结果,实时监控系统状态、文件变化、进程运行,是纯终端实时排查、监控的核心工具。

基础语法


watch [选项] 待监控命令
# 默认:2秒刷新、全屏显示,按Ctrl+C退出

常用选项(高频必记)

选项 说明 实操案例
-n 秒数 自定义刷新间隔 watch -n 1 free -h(1秒刷新内存)
-d 高亮两次刷新的变化内容(重点) watch -d -n 2 ls -l(高亮文件变化)
-t 关闭顶部标题栏(节省终端空间) watch -t -n 3 df -h(无标题栏监控磁盘)
-e 命令执行失败时立即退出 watch -e -n 1 ping -c 1 192.168.1.1
-g 命令输出变化时立即退出 watch -g -n 2 cat /tmp/log.txt

高频监控场景(直接套用)


# 1. 系统资源监控
watch -d -n 1 free -h  # 实时监控内存,高亮变化
watch -d -n 2 df -h    # 实时监控磁盘使用率
watch -n 1 top -b -n 1 | head -20  # 监控TOP前20行(适配批处理模式)

# 2. 文件/日志监控
watch -d -n 1 ls -l /var/log/  # 监控日志目录文件增删/大小
watch -n 1 tail -20 /var/log/syslog  # 实时查看系统日志最后20行

# 3. 网络/进程监控
watch -d -n 1 netstat -tulnp  # 实时监控端口占用
watch -n 1 ps -ef | grep java  # 实时监控Java进程状态
watch -d -n 1 ping -c 1 8.8.8.8  # 实时监控网络连通性

# 4. 多命令组合监控(引号包裹,分号分隔)
watch -d -n 2 "free -h; echo '=========='; df -h"  # 同时监控内存+磁盘

实用技巧

  1. 监控结果保存(留存监控记录,按Ctrl+C停止)

  2. 全屏监控临时操作(无需退出)

  3. Ctrl+C:退出监控(必记)

  4. Ctrl+S:暂停刷新(冻结画面,便于查看细节)

  5. Ctrl+Q:恢复刷新(解除暂停)

  6. 自定义脚本监控(实时查看脚本执行结果)

避坑点

  1. 命令含管道、通配符、引号时,必须用双引号包裹整个命令,否则解析错误:

❌ 错误:watch -n 1 ps -ef | grep java✅ 正确:watch -n 1 "ps -ef | grep java"

  1. 刷新间隔建议≥1秒,避免高频刷新占用终端资源;

  2. SSH远程使用时,断开连接会终止监控,需后台运行可结合nohup/screen

四、ws 命令:终端窗口/工作区管理(高效操作)

核心说明

ws(Workspace/Window Size)是Linux终端窗口尺寸查看/设置、工作区管理通用命令,分基础版(窗口尺寸,全系统通用)拓展版(工作区管理,需安装依赖),适配纯终端排版、多任务并行操作。

模块1:基础版 ws(窗口尺寸查看/设置)

核心用途

查看/设置终端窗口行数/列数(字符数),适配脚本编写、日志格式化、终端界面调整。

实操命令


ws  # 查看当前窗口尺寸,输出示例:80 24(80列,24行)
ws 120 30  # 设置窗口为120列30行(部分终端如xterm支持)
# 脚本中获取窗口尺寸(适配自适应排版)
echo "当前终端尺寸:$(ws)"
COLUMNS=$(ws | awk '{print $1}')  # 单独获取列数

模块2:拓展版 ws(工作区管理,Ubuntu适配)

核心用途

实现多工作区查看、切换、新建、删除,适配同时执行多个运维任务(监控/操作/查找),提升终端效率。

前置安装


sudo apt update && sudo apt install -y wmctrl  # 拓展工具依赖

常用拓展命令

命令 用途 实操案例
wshow 查看所有工作区(*标记当前激活) wshow
wsswitch 数字 切换到指定编号工作区 wsswitch 2
wsnew [名称] 新建命名工作区 wsnew monitor
wsdel 数字 删除指定工作区(需先切换到其他区) wsdel 3
wscur 查看当前激活工作区 wscur

模块3:纯终端伪工作区(SSH远程无图形化适配)

若纯终端不支持拓展ws,用screen实现会话式伪工作区(后台运行,断开SSH不终止):


screen -S work1  # 新建命名会话(工作区1)
Ctrl+A+D         # 脱离会话(保留后台运行)
screen -ls       # 查看所有会话(替代wshow)
screen -r work1  # 连接指定会话(替代wsswitch)
screen -S work1 -X quit  # 删除会话(替代wsdel)

避坑点

  1. 远程SSH纯终端(无图形化)不支持拓展ws工作区,优先用screen/tmux

  2. 设置窗口尺寸时,数值不可超过终端模拟器最大值,否则导致界面错乱;

  3. 拓展ws仅适用于有图形化的终端环境,纯字符终端(tty1-tty6)不支持。

五、wc 命令:文本/文件统计(运维高频工具)

核心用途

wc(Word Count)是Linux终端文本统计核心命令,可快速统计文件或输入流的行数、单词数、字节数、字符数,适配日志分析、脚本统计、文本校验等场景,轻量高效且无需额外依赖,是运维中处理文本的必备工具。

基础语法


wc [选项] [文件路径...]
# 说明:无选项时,默认输出 行数 单词数 字节数 文件名(空格分隔)
# 无文件时,读取标准输入(可结合管道使用)

常用选项(高频必记)

选项 说明 实操案例 典型输出
-l 仅统计行数(Line,最常用) wc -l /var/log/syslog 1258 /var/log/syslog
-w 仅统计单词数(Word,以空白符分隔) wc -w test.txt 326 test.txt
-c 仅统计字节数(Byte,含换行符) wc -c test.sh 892 test.sh
-m 仅统计字符数(Character,适配中文) wc -m 中文文本.txt 156 中文文本.txt
-L 仅统计最长行的长度(字节数) wc -L /etc/profile 78 /etc/profile

高频实操场景(直接套用)


# 1. 日志统计(运维最常用)
wc -l /var/log/nginx/access.log  # 统计Nginx访问日志总行数
wc -l /var/log/*.log  # 统计所有log文件各自的行数
cat /var/log/syslog | grep "error" | wc -l  # 统计日志中error报错行数

# 2. 脚本/代码统计
wc -l /opt/*.sh  # 统计所有shell脚本的行数(估算代码量)
wc -L /opt/config.conf  # 查看配置文件最长行(排查格式错误)

# 3. 管道结合统计(处理输入流)
ls -l /home | wc -l  # 统计/home目录下文件/目录总数(含标题行)
ls -l /home | grep "^-" | wc -l  # 仅统计/home下普通文件数
ps -ef | wc -l  # 统计当前系统运行的进程总数

# 4. 多文件合并统计
wc -l test1.txt test2.txt  # 分别显示两个文件行数+总计
wc -l *.txt  # 统计所有txt文件行数,最后显示总计

实用技巧

  1. 屏蔽总计(仅显示单个文件统计):结合head -n -1,避免多文件统计时的总计行干扰

  2. 精准统计有效行(过滤空行):结合grep -v "^$",排除空白行统计

  3. 统计指定前缀文件行数:结合find批量统计,适配多目录场景

  4. 对比两个文件行数差异:结合diff或直接组合命令,快速校验文件一致性

避坑点

  1. -w(单词数)按**空白符(空格、制表符、换行符)**分隔,中文词语因无空白符,会被统计为1个单词,需注意区分;

  2. -c(字节数)和-m(字符数)区别:英文/数字占1字节=1字符,中文(UTF-8编码)占3字节=1字符,统计中文优先用-m

  3. 统计目录下文件总数时,ls -l | wc -l会包含标题行(total xxx),需减1或用ls -l | grep "^-" | wc -l精准统计;

  4. 处理大文件(GB级)时,wc效率极高,无需担心卡顿,但避免同时统计过多大文件(占用临时内存)。

六、五大命令联动技巧(运维高效组合)

技巧1:find + xargs + watch (实时监控+批量处理)


# 实时监控/data下1天内新增的sh文件,自动加执行权限(屏蔽无结果报错)
watch -n 3 "find /data -type f -name "*.sh" -mtime -1 | xargs chmod +x {} 2>/dev/null"

技巧2:whereis + find (快速定位程序全路径)


# 先找系统内置路径,再找所有关联可执行文件(屏蔽系统目录报错)
whereis -b python3 && find / -name "python3*" -type f -perm +x 2>/dev/null

技巧3:watch + grep + find (实时监控指定条件文件)


# 实时监控/opt下大于50M且含error的log文件,3秒刷新并高亮变化
watch -d -n 3 "find /opt -type f -name "*.log" -size +50M | xargs grep -l "error" 2>/dev/null"

技巧4:ws + 脚本 (终端自适应排版)


#!/bin/bash
# 按终端窗口尺寸自动生成分隔线,适配不同终端输出
WIDTH=$(ws | awk '{print $1}')
printf "=%.0s" $(seq 1 $WIDTH)  # 生成与窗口等宽的分隔线
echo -e "\n系统监控日志($(date))"
printf "=%.0s" $(seq 1 $WIDTH)

技巧5:find + wc (批量统计文件行数/大小)


# 统计/var/log下所有log文件的行数,按文件分组显示并计算总计
find /var/log -name "*.log" -exec wc -l {} \; | awk '{total+=$1; print $0} END {print "总计行数:", total}'
# 统计当前目录下所有txt文件的总字节数
find ./ -name "*.txt" -exec wc -c {} \; | awk '{total+=$1} END {print "总字节数:", total}'

技巧6:watch + wc (实时监控文件变化量)


# 实时监控Nginx访问日志行数变化(1秒刷新,高亮变化)
watch -d -n 1 "wc -l /var/log/nginx/access.log"
# 实时监控日志报错数量变化
watch -d -n 2 "grep "error" /var/log/syslog | wc -l"

技巧7:别名设置(永久简化高频命令)


# 编辑配置文件
vim ~/.bashrc
# 添加以下别名(按需修改)
alias findlog='find ./ -type f -name "*.log" -mtime -7'
alias watchmem='watch -d -n 1 free -h'
alias whereisbin='whereis -b'
alias findlarge='find / -type f -size +100M 2>/dev/null'
alias countline='wc -l'  # 简化行数统计命令
# 生效配置
source ~/.bashrc
# 直接使用别名
findlog && watchmem && countline /var/log/syslog

七、速查备忘(纯终端应急,一键复制)

find 高频应急


find ./ -type f -name "*.log" -mtime +30 -exec rm -rf {} \;  # 清理30天前日志
find / -type f -size +100M 2>/dev/null                      # 查找系统内大文件
find ./ -type f -exec chmod 644 {} \;                        # 批量设置文件权限644
find ./ -empty -type d -exec rmdir {} \;                     # 清理空目录

whereis 高频应急


whereis -b find watch ps netstat  # 批量查系统命令二进制路径
which python3 && whereis -b python3  # 确认命令实际运行路径

watch 高频应急


watch -d -n 1 free -h  # 实时监控内存
watch -d -n 2 "df -h; free -h"  # 同时监控磁盘+内存
watch -n 1 "ps -ef | grep java"  # 监控Java进程
watch -d -n 1 netstat -tulnp  # 监控端口占用

ws 高频应急


ws  # 查看终端窗口尺寸
wsnew monitor && wsswitch 2  # 新建并切换工作区
screen -S work1  # SSH远程伪工作区
screen -ls  # 查看后台会话

wc 高频应急


wc -l /var/log/syslog  # 统计系统日志行数
grep "error" test.log | wc -l  # 统计报错行数
ls -l | grep "^-" | wc -l  # 统计当前目录普通文件数
wc -m 中文文本.txt  # 统计中文文本字符数

更新时间:2026.01.27

使用提示:所有命令均经Ubuntu纯终端验证,可直接复制执行,部分参数可根据实际场景调整。

(注:文档部分内容可能由 AI 生成)