当前位置: 首页 > news >正文

SHELL命令资料

文章目录

  • xargs 命令介绍与使用指南
    • 基本介绍
    • 基本语法
    • 常用选项
    • 常见用法示例
      • 1. 基本使用
      • 2. 控制参数数量
      • 3. 使用替换字符串
      • 4. 处理含空格文件名
      • 5. 并行执行
      • 6. 交互式确认
    • 实用技巧
    • 注意事项
  • find 命令介绍与使用指南
    • 基本语法
    • 常用选项和表达式
      • 1. 按名称查找
      • 2. 按类型查找
      • 3. 按大小查找
      • 4. 按时间查找
      • 5. 按权限查找
      • 6. 按用户/组查找
      • 7. 逻辑操作符
      • 8. 执行操作
    • 高级用法
      • 限制查找深度
      • 排除目录
      • 查找并排序
      • 查找重复文件
    • 实用示例

xargs 命令介绍与使用指南

基本介绍

xargs 是 Unix/Linux 系统中的一个强大命令,用于从标准输入构建和执行命令行。它的主要作用是将输入数据转换为命令行参数,解决"参数列表过长"的问题,并提高命令执行的效率。

基本语法

command | xargs [options] [command [initial-arguments]]

常用选项

选项描述
-n指定每次执行命令使用的参数个数
-I定义替换字符串(通常用 {} 或自定义符号)
-p交互式模式,执行前询问用户确认
-t打印要执行的命令
-0处理包含空格或特殊字符的输入(与 find -print0 配合使用)
-d指定分隔符(默认是空格和换行)
-L指定每次执行命令使用的行数
-s设置最大命令行长度

常见用法示例

1. 基本使用

# 查找当前目录下的.txt文件并删除
find . -name "*.txt" | xargs rm# 统计所有.php文件的行数
find . -name "*.php" | xargs wc -l

2. 控制参数数量

# 每次只传递2个参数给echo命令
echo {1..10} | xargs -n 2
# 输出:
# 1 2
# 3 4
# ...
# 9 10

3. 使用替换字符串

# 使用-I指定替换字符串{}
find . -name "*.bak" | xargs -I {} mv {} ~/backup# 使用自定义替换符号(如@)
ls *.jpg | xargs -I @ cp @ @.backup

4. 处理含空格文件名

# 安全处理含空格文件名(配合find的-print0)
find . -name "*.mp3" -print0 | xargs -0 rm

5. 并行执行

# 使用-P选项并行处理(GNU xargs扩展)
find . -type f | xargs -P 4 -n 1 gzip
# 这将以4个并行进程压缩文件

6. 交互式确认

# 删除文件前确认
find . -name "*.log" | xargs -p rm

实用技巧

  1. 与grep结合

    find /path -type f | xargs grep "search_string"
    
  2. 批量创建目录

    echo dir1 dir2 dir3 | xargs mkdir
    
  3. 批量下载URL

    cat url_list.txt | xargs -n 1 wget
    
  4. 处理CSV数据

    echo "a,b,c,d" | xargs -d, -n 1
    # 输出:
    # a
    # b
    # c
    # d
    

注意事项

  1. 当处理可能包含空格、引号或其他特殊字符的文件名时,始终使用 -print0-0 选项
  2. 在执行破坏性操作(如删除文件)前,先用 -t-p 选项测试
  3. 注意命令的参数限制,必要时使用 -n-s 选项

xargs 是 Unix/Linux 系统管理员和开发人员的强大工具,熟练掌握可以显著提高工作效率。


find 命令介绍与使用指南

find 是 Linux/Unix 系统中一个非常强大的文件查找工具,它可以根据各种条件(如文件名、类型、大小、修改时间等)在目录树中搜索文件,并对找到的文件执行操作。

基本语法

find [路径...] [表达式]
  • 路径:指定查找的起始目录,默认为当前目录 (.)
  • 表达式:指定查找条件和操作

常用选项和表达式

1. 按名称查找

find /path -name "filename"      # 精确匹配文件名
find /path -iname "filename"     # 不区分大小写
find /path -name "*.txt"         # 通配符匹配

2. 按类型查找

find /path -type f               # 查找普通文件
find /path -type d               # 查找目录
find /path -type l               # 查找符号链接

其他类型:

  • b - 块设备文件
  • c - 字符设备文件
  • p - 命名管道(FIFO)
  • s - 套接字文件

3. 按大小查找

find /path -size +10M            # 大于10MB的文件
find /path -size -1G             # 小于1GB的文件
find /path -size 0               # 空文件

单位:

  • b - 512字节块(默认)
  • c - 字节
  • k - KB
  • M - MB
  • G - GB

4. 按时间查找

find /path -mtime -7            # 7天内修改过的文件
find /path -atime +30           # 30天前访问过的文件
find /path -cmin -60            # 60分钟内状态改变的文件

时间选项:

  • -mtime - 修改时间(内容修改)
  • -atime - 访问时间
  • -ctime - 状态变化时间(权限、所有者等)
  • -mmin, -amin, -cmin - 分钟为单位

5. 按权限查找

find /path -perm 644            # 精确匹配权限644
find /path -perm -644           # 至少包含644权限
find /path -perm /u=r           # 用户有读权限的文件

6. 按用户/组查找

find /path -user username       # 属于指定用户的文件
find /path -group groupname     # 属于指定组的文件
find /path -nouser              # 没有有效用户的文件
find /path -nogroup             # 没有有效组的文件

7. 逻辑操作符

find /path \( -name "*.txt" -o -name "*.pdf" \)  # OR操作
find /path -name "*.tmp" -not -user root         # NOT操作
find /path -type f -a -name "*.log"              # AND操作(默认)

8. 执行操作

find /path -name "*.tmp" -delete                 # 删除找到的文件
find /path -name "*.log" -exec rm {} \;          # 执行rm命令
find /path -name "*.txt" -exec cp {} /backup \;  # 复制文件
find /path -type f -print0 | xargs -0 chmod 644  # 配合xargs修改权限

{} 是找到的文件的占位符,\; 表示命令结束

高级用法

限制查找深度

find /path -maxdepth 2 -name "*.conf"  # 最多查找2层目录
find /path -mindepth 3 -name "*.log"   # 从第3层目录开始查找

排除目录

find /path -name "node_modules" -prune -o -name "*.js" -print

查找并排序

find /path -type f -printf "%T@ %p\n" | sort -n | cut -d' ' -f2-

查找重复文件

find /path -type f -exec md5sum {} + | sort | uniq -w32 -dD

实用示例

  1. 查找并删除7天前的日志文件:
find /var/log -name "*.log" -mtime +7 -delete
  1. 查找所有PHP文件并更改权限:
find /var/www -name "*.php" -exec chmod 644 {} \;
  1. 查找大于100MB的文件:
find / -type f -size +100M -exec ls -lh {} \;
  1. 查找空文件和空目录:
find /path -empty
  1. 查找最近修改的10个文件:
find /path -type f -printf "%T@ %p\n" | sort -nr | head -10 | cut -d' ' -f2-

find 命令非常灵活,可以通过组合不同的选项实现复杂的查找需求。掌握 find 可以大大提高在 Linux 系统中管理文件的效率。

http://www.xdnf.cn/news/748801.html

相关文章:

  • C++类设计新思路:借鉴Promise链式调用的封装模式
  • CodeTop100 Day18
  • 【Python进阶】元编程、并发
  • @PathVariable注解-补充
  • (附代码)自定义 LangChain 文档分割器,深入探索 LangChain 文档分割策略与应用
  • 硬件开发全解:从入门教程到实战案例与丰富项目资源
  • 深入理解设计模式之解释器模式
  • Vue-过滤器
  • C++语法系列之模板进阶
  • 青柠日记:记录美好,守护隐私
  • RL 基础 (待补充)
  • 【Python Cookbook】文件与 IO(一)
  • Redis--缓存工具封装
  • 【PhysUnits】15.6 引入P1后的左移运算(shl.rs)
  • 佳能 Canon G3030 Series 打印机信息
  • 【C语言练习】075. 使用C语言访问硬件资源
  • [LitCTF 2024]浏览器也能套娃?
  • [学习] RTKlib 实用工具介绍
  • JDK17 与JDK8 共同存在一个电脑上
  • 静态综合实验
  • 软件性能之CPU
  • 机器学习算法——KNN
  • vue3的watch用法
  • 树莓派PWM控制LED灯
  • 使用arthas热替换在线运行的java class文件
  • 描述性统计的可视化分析
  • Java弱引用与软引用的核心区别
  • ubuntu20.04.5-arm64版安装robotjs
  • 牛客周赛94
  • 使用Java实现简单的计算机案例