Jacky's blog
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)
  • 开发工具

  • 构建工具

  • 版本控制

  • 容器

  • 调试工具

  • 测试工具

  • CLI 工具

    • tmux
    • oh-my-zsh
    • ripgrep 高性能文本搜索工具使用指南
    • awk
    • sed
    • xargs
      • options
      • case
    • fzf
    • fd
    • raycast
    • VisiData 终极生存指南(vd)
    • yq
    • direnv
    • ln 软链接/硬链接使用指南
    • watch 周期监控使用指南
    • osascript
  • 网络工具

  • 编辑器

  • 设计工具

  • 多媒体

  • 包管理

  • 平台工具

  • tools
  • cli_tools
Jacky
2024-10-24
目录

xargs

给其他命令传递参数的一个过滤器

# options

  • -n: 多行输出,如 n2
  • -d: 可以自定义一个定界符
  • -I: 指定一个替换字符串通常为 {}, 这个字符串在 xargs 扩展时会被替换掉, 当 -I 与 xargs 结合使用
  • -t: 打印出 xargs 执行的命令
  • -p: 选项确认执行的命令

# case

  • fd -e zip -0 | xargs -0 -I {} -t tar xvf {}: 解压全部文件
  • ls -d */ | grep iOS | xargs -I {} sh -c 'cd {} && git fetch && git pull': 通过 git 更新符合特定特征的目录
  1. 通过 git 打印符合特定特征的目录的当前分支

    ls -d */ | grep iOS | xargs -I {} sh -c 'cd {} && _current=$(git symbolic-ref --short HEAD) && echo {}: $_current'

  2. 批量切换到固定 branch

    ls -d */ | grep iOS | xargs -I {} sh -c 'cd {} && git fetch && git pull && git checkout <branch>

  3. 删除 *.log 文件

    find . -type f -name "*.log" -print0 | xargs -0 rm -f

  4. 统计一个源代码目录中所有 php 文件的行数. 并找出最大行的文件

    find . -type f -name "*.php" -print0 | xargs -0 wc -l | sort -r | head -1

  5. 希望下载多个 URL

    • cat url-list.txt | xargs wget -c
  6. 读取配置文件, 对各个内容操作

    cat <file> | tr '\n' '\0' | xargs -0 -I {} -t echo {}

  7. 查找所有的 jpg 文件, 并且压缩它们

    • find ./docs -type f -name "*.md" -print0 | xargs -0 tar -czvf markdown.tar.gz
  8. 提取当前目录下所有的 git 项目的 remote url

    # `2>/dev/null`: 忽略了错误信息
    ls | tr ' ' '0' | xargs -I {} sh -c "cd {} && git remote -v | awk 'NR==1{print \$2}'" 2>/dev/null
    
    1
    2
  9. xargs 执行 sh , 失败继续执行

    cat <file> | tr '\n' '\0' | xargs -0 -I {} sh -c 'cd {} && (echo {} && git fetch && git pull && git status || true)'
    
    1
  10. 从 git url 中批量提取目录

    • cat <file> | tr '\n' '\0' | xargs -0 -I {} basename {} | sed 's/\.git//'
  11. 查看远程是否存在某一个分支

cat <file> | tr '\n' '\0' | xargs -0 -I {} sh -c 'cd {} && (echo {} && git fetch && git ls-remote --heads origin xxx)'
1
#Shell#Linux#tool#cli
上次更新: 2026/10/18, 22:14:48
sed
fzf

← sed fzf→

最近更新
01
Codex 使用与会话管理指南
10-17
02
Tailscale 入门:让自己的设备跨网络互联
10-15
03
GitHub CLI(gh)工作流与 CI 排查
10-08
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式