Linux基础(文本查找、压缩打包)

一、文件查找工具

1. locate 快速查找

locate [选项] 文件名
选项 功能 示例
-i 忽略大小写 locate -i config
-r 使用正则表达式 locate -r "\.conf$"
-n N 仅显示前N个结果 locate -n 5 "*.log"

注意事项

  • 依赖数据库更新:sudo updatedb
  • 无法实时查找新文件(需更新数据库)
  • 默认数据库更新周期:每日自动更新

二、find 高级查找

1. 基本语法

find [路径] [选项] [操作]

2. 核心搜索条件

条件类型 选项 示例
名称/INODE -name "模式" find /etc -name "*.conf"
-iname "模式" find . -iname "readme*"
-inum N find / -inum 12345
文件类型 -type [fdlbcsp] find /var -type d (目录)
用户/组 -user name find /home -user alice
-group name find / -group devs
特殊归属 -nouser find /tmp -nouser (无属主文件)
-nogroup find /var -nogroup (无属组文件)
空文件 -empty find . -empty
目录深度 -maxdepth N find / -maxdepth 2 -name "*.log"
-mindepth N find /var -mindepth 3 -type f
文件大小 -size [+-]N[cwkMG] find / -size +100M (>100MB)
时间戳(天) -atime/-mtime/-ctime N find /var/log -mtime -7 (7天内修改)
时间戳(分) -amin/-mmin/-cmin N find ~ -amin -30 (30分钟内访问)
权限 -perm 644 精确匹配权限
-perm /444 任意用户有读权限
-perm -444 所有用户有读权限

3. 组合条件与逻辑运算

逻辑符 含义 示例
-a 与 (默认) find / -size +50M -a -name "*.iso"
-o find / \( -name "*.txt" -o -name "*.log" \)
-not find /var -not -user root

复杂示例

# 查找/etc下非security目录的.conf文件
find /etc -path '/etc/security' -prune -o -name "*.conf" -print

# 使用德摩根定律:非(root或postfix用户)的文件
find /var -mtime -7 -not \( -user root -o -user postfix \)

4. 处理动作

动作 功能 示例
-ls 显示详细信息 find /tmp -name "*.tmp" -ls
-fls 文件 保存结果到文件 find /home -fls results.txt
-delete 删除文件 find /var/tmp -mtime +30 -delete
-exec 命令 \; 执行命令(无确认) find . -name "*.bak" -exec rm {} \;
-ok 命令 \; 执行命令(需确认) find . -size +100M -ok mv {} /backup/ \;

企业级应用

# 查找并删除大文件
find /var/log -size +500M -delete

# 批量复制文件(使用占位符 {})
find /src -name "*.conf" -exec cp {} /backup/ \;

三、xargs 命令增强

1. 核心功能

将标准输入转换为命令行参数

find [条件] | xargs [选项] [命令]

2. 常用选项

选项 功能 示例
-n N 每次传递N个参数 `echo 1 2 3 4
-I {} 替换字符串 `find . -name “*.txt”
-t 先打印命令再执行 `echo file
-p 交互式确认 `find /tmp
-r 无输入时不执行命令 `find /empty
-0 处理含空格/特殊字符的文件名 `find -print0

3. 安全处理含空格文件名

# 标准方式(推荐)
find . -print0 | xargs -0 rm

# 传统方式(危险!可能误删)
find . | xargs rm  # 文件名含空格时会出错

四、文件压缩与打包

1. 单文件压缩工具对比

工具 压缩命令 解压命令 特性
compress compress 文件 uncompress 文件.Z 古老格式,不推荐
gzip gzip 文件 gunzip 文件.gz 速度快,通用
bzip2 bzip2 文件 bunzip2 文件.bz2 压缩率高,速度慢
xz xz 文件 unxz 文件.xz 超高压缩率,速度最慢
通用选项 -k 保留原文件 -d 解压 -# 压缩级别(1-9)

高级用法

# 保留原文件压缩
gzip -k -9 largefile.iso

# 查看而不解压
zcat file.gz     # gzip
bzcat file.bz2   # bzip2
xzcat file.xz    # xz

2. zip 跨平台压缩

# 压缩文件/目录
zip -r 存档名.zip 文件或目录

# 加密压缩
zip -P 密码 加密.zip 敏感文件

# 解压到指定目录
unzip 存档.zip -d 目标目录

3. tar 归档大师

# 基础语法
tar [主选项] [辅选项] 存档文件 文件/目录
主选项 功能 辅选项 功能
c 创建存档 v 显示详细过程
x 解压存档 f 指定存档文件
t 查看内容 C 指定解压目录

压缩联合用法

# 创建压缩存档
tar czvf 存档.tar.gz 目录      # gzip压缩
tar cjvf 存档.tar.bz2 目录     # bzip2压缩
tar cJvf 存档.tar.xz 目录      # xz压缩

# 解压压缩包
tar xzvf 存档.tar.gz -C 目标目录
tar xjvf 存档.tar.bz2
tar xJvf 存档.tar.xz

4. 企业级应用

# 生成大文件测试
dd if=/dev/zero of=test.img bs=1M count=1024

# 查找并压缩历史日志
find /var/log -name "*.log" -mtime +30 -exec tar czvf old_logs.tar.gz {} +

五、重点技巧总结

  1. find 黄金组合

    # 安全处理含空格文件名
    find . -print0 | xargs -0 command
    
    # 复杂条件搜索
    find / \( -path /proc -o -path /sys \) -prune -o -name "*.conf"
    
  2. 压缩选择建议

    • 快速压缩 → gzip
    • 高压缩率 → xz
    • Windows兼容 → zip
  3. 生产环境规范

    # 清理30天前日志
    find /var/log -type f -name "*.log" -mtime +30 -delete
    
    # 每日备份增量
    tar czvf backup-$(date +%F).tar.gz --newer-than "1 day ago" /data
    
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇