2016-11-23 26 views
0

我想通過使用下面的命令將特定文件重定向到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

回答

0

您需要使用grep命令而不是find,該命令對文件系統進行爬網。

0

如果你正在尋找的文件名「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'<<<'/ directory/sample.txt'' –

+0

你是對的。我誤解了這個問題,並會糾正我的答案。 –

+0

好的,糾正了我的答案,謝謝你抓住我的錯誤。順便說一句,你的解決方案非常優雅。 –

相關問題