如何将特定文件传送到查找命令?

问题描述:

我想通过使用下面的命令将特定文件重定向到bash shell中的“查找”命令。如何将特定文件传送到查找命令?

ls sample.txt | find -name "*ple*" 

我想搜索的子串ple中,我已通过文件名sample.txt,但上面的命令是从目录中的所有文件检查了比赛。它不是在我使用管道传递的特定文件中搜索匹配。

+1

请编辑您的Q可展示的是从你的操作您所需的输出。如果你正在为你的文件做'ls -l',只要执行'find -name'* ple'-ls'('find'不是为了读取它的'stdin')。祝你好运。 – shellter

+0

['ls'不是编程使用的合适工具](http://mywiki.wooledge.org/ParsingLs)。与你想要一起使用的工具相比,你的实际目标是什么? –

+0

为什么你认为你需要使用'find'?这应该是'grep ple sample.txt' – Barmar

您需要使用grep命令而不是find,该命令对文件系统进行爬网。

如果你正在寻找的文件名“sample.txt的”子字符串“PLE”,那么这段代码会做你需要的东西:

mkdir -p /tmp/holder-file/ && cp /directory/sample.txt /tmp/holder-file/ && ls /tmp/holder-file/ | grep -e "ple" 

不是超级优雅,但伟大工程。

编辑:感谢本杰明W.谁用更优雅的解决方案来:

grep -e 'ple' <<< '/directory/sample.txt' 
+0

这会检查字符串“ple”的'sample.txt'的_contents_,而不是文件名。例如,你必须使用here-string来做你想做的事:'grep'ple'

+0

你是对的。我误解了这个问题,并会纠正我的答案。 –

+0

好的,纠正了我的答案,谢谢你抓住我的错误。顺便说一句,你的解决方案非常优雅。 –