当前位置:  开发笔记 > 编程语言 > 正文

如何在exec参数中使用管道来查找命令?

如何解决《如何在exec参数中使用管道来查找命令?》经验,为你挑选了2个好方法。

我正在尝试使用两个不同的可执行文件构造一个find命令来处理目录中的一堆文件.不幸的是,-exec在find上不允许使用管道,甚至\|因为shell首先解释了该字符.

这是我正在尝试做的事情(由于管道结束了find命令,因此无效):

find /path/to/jpgs -type f -exec jhead -v {} | grep 123 \; -print

Martin Marco.. 79

试试这个

find /path/to/jpgs -type f -exec sh -c 'jhead -v {} | grep 123' \; -print

或者,您可以尝试将您的exec语句嵌入到sh脚本中,然后执行:

find -exec some_script {} \;


Palmin.. 12

稍微不同的方法是使用xargs:

find /path/to/jpgs -type f -print0 | xargs -0 jhead -v | grep 123

我总是觉得更容易理解和适应(-print0和-0参数是处理包含空格的文件名所必需的)

可能(未经测试)比使用-exec更有效,因为它会将文件列表传递给xargs,并且xargs确保jhead命令行不会太长.



1> Martin Marco..:

试试这个

find /path/to/jpgs -type f -exec sh -c 'jhead -v {} | grep 123' \; -print

或者,您可以尝试将您的exec语句嵌入到sh脚本中,然后执行:

find -exec some_script {} \;



2> Palmin..:

稍微不同的方法是使用xargs:

find /path/to/jpgs -type f -print0 | xargs -0 jhead -v | grep 123

我总是觉得更容易理解和适应(-print0和-0参数是处理包含空格的文件名所必需的)

可能(未经测试)比使用-exec更有效,因为它会将文件列表传递给xargs,并且xargs确保jhead命令行不会太长.


在这里使用xargs的问题是我需要匹配的文件的名称.此命令确实找到匹配项,但我不知道哪个文件匹配.
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有