Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • shell

    • shell 入门指南
    • linux 入门指南
    • Shell 常用命令速查手册
    • Shell 代码片段集合
    • awk
    • fd
    • ftp
    • sftp
    • ifconfig
    • ssh
    • sed
    • xargs
      • options
      • case
  • tool

  • 网络

  • algo

  • compute_base

  • blog

  • growth

  • java

  • C&C++

  • ai

  • secure

  • cms

  • english

  • 生活

  • 金融学

  • more

  • other
  • shell
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
  1. 读取配置文件, 对各个内容操作

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

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

  • find ./docs -type f -name "*.md" -print0 | xargs -0 tar -czvf markdown.tar.gz
  1. 提取当前目录下所有的 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
  1. xargs 执行 sh , 失败继续执行
cat <file> | tr '\n' '\0' | xargs -0 -I {} sh -c 'cd {} && (echo {} && git fetch && git pull && git status || true)'
1
  1. 从 git url 中批量提取目录
cat <file> | tr '\n' '\0' | xargs -0 -I {} basename {} | sed 's/\.git//'
1
  1. 查看远程是否存在某一个分支
cat <file> | tr '\n' '\0' | xargs -0 -I {} sh -c 'cd {} && (echo {} && git fetch && git ls-remote --heads origin xxx)'
1
上次更新: 2024/11/29, 16:35:56
sed
mac

← sed mac→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式