参数简介
1 2 3 4 5 6 7 8 9 10 11 12 13
| -0 用\0分割字符串 , 主要和find -print0配合, 能操作不规范文件名的文件 如: 1 log.txt (有空格的文件名) -E 自定义结束标记 , 找到该标记之后 后面的内容就不读入了 -I 给拿到的每一行数据起个别名 如: find . -type f -name "*.png" | xargs -I @ echo @ -J 和I差不多, BSD shell 独有, GNU shell没有 -L 一次读取多少行 -n 一次选中多少行, 和-L差不多 -o 没查到资料 -P 没查到资料 -p 没查到资料 -R 没查到资料 -s 没查到资料 -t 显示命令, 调试用的 -x 没查到资料
|
sed 单引号获取变量值的写法
1 2 3 4 5
| sed -i "" 's/regex/replace/g' file
sed -i "" 's/regex/'"${var}"'/g' file
Yeah, in mac should use -I, e.g. redis-cli keys 'foo*' | xargs -I @ echo @
|
linux & mac xargs区别
1 2 3 4 5
| # linux basename -s .JPG -a *.JPG | xargs -n1 -i mv {}.JPG {}.jpg
# mac basename -s .JPG -a *.JPG | xargs -n1 -I {} mv {}".JPG" {}".jpg"
|
真对有空格的文件名的解决办法
1
| find . -type f -name "*.png" -print0 | xargs -0 -L 1 -I @ echo @
|
参考:
http://www.jb51.net/LINUXjishu/205761.html
mac -J -I 都能用 效果差不多 , 为了和 Linux统一还是用-I吧
参考:
https://superuser.com/questions/529742/how-can-i-move-files-with-xargs-on-linux/529744
https://unix.stackexchange.com/questions/407634/xargs-j-option
-n 与 -L的区别
1 2 3 4 5 6 7 8 9
| find . -type f -name "*.png" -print0 | xargs -0 -L 2 -t echo #-L 从标准输入一次读取num行送给Command命令
echo ./下载 (1).png ./下载 (2).png ./下载 (1).png ./下载 (2).png echo ./下载.png ./图片 1.png ./下载.png ./图片 1.png echo ./图片 21.png ./图片 21.png
|
1 2
| find . -type f -name "*.png" -print0 | xargs -0 -n5 -t open # -n 相当于 多选, 当-n5的时候 图片不是一个个打开, 会打开成 列表
|
参考:
http://blog.163.com/squall_smile/blog/static/603498402013122570281/