xargs 指定参数

  1. find . -newermt '2019-09-20 18:57' -maxdepth 1|grep './'|xargs -I '{}' rm -rf {}

xargs

  • -n, 每次执行命令时替换的最大参数个数, 如-n1, Use at most MAX-ARGS arguments per command line
    使用 -I 指定一个替换字符串, 示例如下:

    1. realpath ./sugar| xargs -t -I '{}' ln -s {} /root/sugar
  • -t 会显示 debug 信息. 当有一些不可见字符时, 使用 xargs 可能会失败, 这时就是使用 -t 的好时机:

  1. find . -name '*pdf'|xargs -d f -n1 -t -I {} mv "{}f" ~/iBooks/
  2. // 输出: 因为包含了空格, 然后改了分隔符后就会出现问题, \n.
  3. mv './Programming Rust.pdf' /Users/yutou/iBooks/
  4. mv ''$'\n''./技术领导之路——全面解决问题的途径 - 文字版.pdf' /Users/yutou/iBooks/
  5. mv:
  6. ./技术领导之路——全面解决问题的途径 - 文字版.pdf: No such file or directory
  • -d 定界符, 一般情况下使用空格作为定界符. 但是当文本中含有空格, 那么这个默认的定界符就会失效. 这时可以指定新的定界符
  1. printf "abn"|xargs -d b
  2. a n

实战

把当前文件(都是zip结尾的)全部解压

  • -A 是为了去掉目录.
    1. ls -A|xargs -n1 -I {} unzip {}