处理带有空格的文件名

#我们创建了3个日志文件, 且故意让文件名称中都含有空格
[roc@roclinux ~]$ for((i=;i<;i++)); do touch "test ${i}.log";done
#我们列出创建的文件
[roc@roclinux ~]$ ls -1F
test .log
test .log
test .log

xargs 提供了-0选项,允许将 NULL 作为分隔符,而 find 命令也心有灵犀地提供了对应的选项来产生以 NULL 字符作为分隔符的输出。

find 命令提供的对应方法是 -print0 选项,在文件名之后输出 NULL,而不像 -print 选项那样输出换行符(换行符会被 xargs 替换成空格)。

[roc@roclinux ~]$ find . -name '*.log' -print0 | xargs - rm -f

需要用户确认

如果在前一个命令的标准输出中,会有一些参数是你不希望或者不确定是否要传送给后面命令的,这个时候我们就希望 xargs 在传送参数前和我们确认一下。而-p选项恰好可以实现这个愿望,我们可以输入 y 或者 n 来选择是否要执行当前命令:

[roc@roclinux ~]$ find . -type f |xargs -p rm -f
rm -f ./china.txt ./usa.txt ./japan.txt ?...n

每一条都需要询问:

[roc@roclinux ]$ find . -type f |xargs -p -n  rm -f
rm -f ./china.txt ?...n
rm -f ./usa.txt ?...y
rm -f ./japan.txt ?...n

遇到就停止

比如,我们正在处理一份日志文件 country.list 中的内容,将日志文件中的字符以空行作为分隔符依次 echo 出来,一旦遇到 korea 便终止退出:

[roc@roclinux ~]$ echo "china usa korea japan" > country.list

[roc@roclinux ~]$ cat country.list
china usa korea japan [roc@roclinux ~]$ cat country.list | xargs -E 'korea' echo
china usa

你可能一生都不会遇到的参数过长报错

我们来模拟一个这样的场景,新建 10 万个日志文件,并且尝试用 rm 命令一次性删除:

[roc@roclinux ~]$ for((i=;i<;i++)); do touch test${i}.log;done

[roc@roclinux ~]$ rm $(find . -type f -name '*.log')
-bash: /bin/rm: Argument list too long

出现了“Argument list too long”报错,这说明 rm 可接受的参数长度达到了极限。这其实并非 rm 的错,而是系统限制了参数的长度。通过下面的命令可以查看到系统的参数长度限制值:

[roc@roclinux ~]$ getconf ARG_MAX
[roc@roclinux ~]$ find . -name '*.log' -print | xargs rm

把*.txt的文件重命名为*.txt.bak

ls *.txt |xargs -t -i  mv {} {}.bak

查找文件并压缩

这样就把“jpg”的文件压缩了。

find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

最新文章

  1. 【一起学OpenFOAM】系列由来
  2. 复制文件的问题:使用FileInputStream和FileOutputStream实现文件复制
  3. [WPF]Slider控件常用方法
  4. 【HDU 2063】过山车(二分图匹配)
  5. 华为手机Edittext光标(cursor)颜色修改
  6. Android打开新的Activity并同时关闭当前Activity
  7. IIS HTTP文件服务器搭建步骤
  8. oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包
  9. C语言中 指针与结构体
  10. ZOJ 3790 Consecutive Blocks
  11. 如何使用git创建项目,创建分支
  12. TensorFlow 深度学习笔记 Stochastic Optimization
  13. java线程管理
  14. Android 开发笔记 “弹出框”
  15. php给数组key:value中的key加引号
  16. Python 迭代器和列表解析
  17. 启动时候报错由于没有扫包 error creating bean with name
  18. 通过hook实现禁止shift+delete快捷键
  19. Hadoop 系列文章(一) Hadoop 的安装,以及 Standalone Operation 的启动模式测试
  20. Aspose.Words 将word2中的内容插入到word1中的指定位置

热门文章

  1. kali渗透
  2. Js迷宫游戏
  3. [笔记] 二级指针(pointer to pointer)
  4. .NET CORE 中的缓存使用
  5. golang ----并发 &amp;&amp; 并行
  6. C#读写设置修改调整UVC摄像头画面-白平衡
  7. C#生成唯一不重复订单号帮助类
  8. Quartz.net使用笔记
  9. 连接池未注册org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias &#39;XXX&#39;
  10. iOS架构:MVVM设计模式+RAC响应式编程