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
实用技巧
-
与grep结合:
find /path -type f | xargs grep "search_string"
-
批量创建目录:
echo dir1 dir2 dir3 | xargs mkdir
-
批量下载URL:
cat url_list.txt | xargs -n 1 wget
-
处理CSV数据:
echo "a,b,c,d" | xargs -d, -n 1 # 输出: # a # b # c # d
注意事项
- 当处理可能包含空格、引号或其他特殊字符的文件名时,始终使用
-print0
和-0
选项 - 在执行破坏性操作(如删除文件)前,先用
-t
或-p
选项测试 - 注意命令的参数限制,必要时使用
-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
- KBM
- MBG
- 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
实用示例
- 查找并删除7天前的日志文件:
find /var/log -name "*.log" -mtime +7 -delete
- 查找所有PHP文件并更改权限:
find /var/www -name "*.php" -exec chmod 644 {} \;
- 查找大于100MB的文件:
find / -type f -size +100M -exec ls -lh {} \;
- 查找空文件和空目录:
find /path -empty
- 查找最近修改的10个文件:
find /path -type f -printf "%T@ %p\n" | sort -nr | head -10 | cut -d' ' -f2-
find
命令非常灵活,可以通过组合不同的选项实现复杂的查找需求。掌握 find
可以大大提高在 Linux 系统中管理文件的效率。