幸福一箩筐|如何在Linux上使用xargs命令( 三 )

这一命令执行了以下操作:

  • find . -name “*.png” :find 将从当前目录中搜索名称和 *.png 相匹配的对象 , type -f 指定了只搜索文件 。
  • -print0:名称将以空字符结尾 , 并且保留空格和特殊字符 。
  • xargs -0:xargs 也将考虑文件名以空值结尾 , 并且空格和特殊字符不会引起问题 。
  • rm -v -rf "{}":rm 将反馈正在进行的操作(-v) , 递归进行操作(-r) , 不发送错误提示而直接删除文件(-f) 。每个文件名替换 "{}" 。
命令执行之后 , 将搜索了所有子目录 , 删除了其中匹配的文件 。
幸福一箩筐|如何在Linux上使用xargs命令删除嵌套目录假设我们要删除一组嵌套的子目录 , 先用tree进行查看 。
$ tree -d
幸福一箩筐|如何在Linux上使用xargs命令$ find . -name "level_one" -type d -print0 | xargs -0 rm -v -rf "{}"这条命令使用 find 在当前目录中递归搜索 , 搜索的目标是名为 level_one 的目录 , 然后将目录名通过xargs传递给 rm。
这个命令和前面的命令之间的区别是 , 搜索的项目是最顶层目录的名称 , 而且-type d说明要查找的目录 , 而不是文件 。
幸福一箩筐|如何在Linux上使用xargs命令每个目录的名称都在删除时打印出来 。 我们可以用tree再查看效果:
$ tree -d
幸福一箩筐|如何在Linux上使用xargs命令所有嵌套的子目录已删除了 。
删除一种文件类型以外的所有文件我们可以使用 find, xargs 和 rm 删除所有类型的文件而只保留一种我们想要保留的类型的文件 。 这需要提供想要保留的文件类型 。
-not 选项让 find 返回所有与搜索模式不匹配的文件名 。 我们此时再次使用 xargs 的 -I (初始参数)选项 。 这次定义的替换字符串为 {}。 这和我们之前使用的替换字符串 % 的效果是相同的 。
$ find . -type f -not -name "*.sh" -print0 | xargs -0 -I {} rm -v {}
幸福一箩筐|如何在Linux上使用xargs命令命令执行之后 , 我们再通过 ls 来确认结果 。 可以看到 , 目录中只剩下了与 *.sh 相匹配的文件 。
$ ls -l
幸福一箩筐|如何在Linux上使用xargs命令使用Xargs创建压缩文件我们可以使用 find 命令来搜索文件 , 并通过 xargs 将文件名传给 tar 命令来创建压缩文件 。
我们将在当前目录中搜索 * .sh 文件 。
$ find ./ -name "*.sh" -type f -print0 | xargs -0 tar -cvzf script_files.tar.gz命令执行结果将列出了所有 .sh 文件 , 并创建了压缩文件 。
幸福一箩筐|如何在Linux上使用xargs命令> 2020 精选 阿里/腾讯等一线大厂 面试、简历、进阶、电子书 「**良许Linux**」后台回复「**资料**」免费获取


推荐阅读