因为xargs识别字符段的标识是空格或者换行符,所以如果一个文件名里有空格或者换行符,xargs就会把它识别成两个字符串,自然就出错了。 这时候就需要-print0和-0了。 find -print0表示在find的每一个结果之后加一个NULL字符,而不是默认加一个换行符。find的默认在每一个结果后加一个'\n',所以输出结果是一行一行的...
六、-0 参数与 find 命令 由于xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。 find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。 $ find /path -type f -print0 | xargs -0 rm 上面命令删除/path路径下的所有文件。
$ xargs -L 1 find -name *txt jiyik.txt *md jiyik.md -0 与find命令 由于xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。 find命令有一个特别的参数 -print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。 $ find /path -type f -print0...
为了解决此类问题, 让 find命令在打印出一个文件名之后接着输出一个 NULL 字符 ('') 而不是换行符(-print0), 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符(xargs -0). 这就是 find 的 -print0 和 xargs 的 -0 的来历吧. [bash-4.1.5] ls -l total 0 -rw-r--r-- 1 root root 0 ...
看到命令find . -name '*.h' -print0 | xargs -0 checkout-cache -f -- 不明白其中-print0和 xargs -0的用法。查了一下,转载一篇备忘。 xargs命令的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 以下内容转自http://blog.163.com/laser_meng@126/blog/static/169727844201171...
-xargs -0的包含空格的文件的操作。 【起因】使用find+rm命令无法删除带有空格的文件。 xargs命令输出 【原因】:xargs默认是以空白字符(空格、换行符、制表符)来分割记录的,实际上rm删除的数据便是./one和file.txt。而 【解决方案】:此时我们不能使用默认的分割符,而应该使用自定义的分割符!我们知道find命令,文...
-xargs -0的包含空格的文件的操作。 【起因】使用find+rm命令无法删除带有空格的文件。 xargs命令输出 【原因】:xargs默认是以空白字符(空格、换行符、制表符)来分割记录的,实际上rm删除的数据便是./one和file.txt。而 【解决方案】:此时我们不能使用默认的分割符,而应该使用自定义的分割符!我们知道find命令,文...
针对该问题,find提供了一个print0选项,设置find在输出文件名后自动添加一个NULL来替代换行符,而xargs也可以通过-0选项,指定使用NULL而不是空格、Tab制表符、回车符为分隔符和结束符。
xargs 命令的退出状态有多种含义:当所有 Command 参数的调用都成功并返回正常时,xargs 会返回退出状态 0,表示一切顺利。如果遇到无法满足指定需求的命令行,或者一个或多个 Command 参数的调用返回非零退出状态,错误发生时,xargs 会返回退出状态 1-125。这表明命令执行过程中出现了问题,但并非找不到...
find /usr/local/backups -name "*.html" -mtime +10 -print0 |xargs -0 rm -rfv find /usr/local/backups -mtime +10 -name "*.html" -exec rm -rf {} \; find -print和-print0的区别: -print在每一个输出后会添加一个回车换行符,而-print0则不会。