我想通過使用下面的命令將特定文件重定向到bash shell中的「查找」命令。如何將特定文件傳送到查找命令?
ls sample.txt | find -name "*ple*"
我想搜索的子串ple
中,我已通過文件名sample.txt
,但上面的命令是從目錄中的所有文件檢查了比賽。它不是在我使用管道傳遞的特定文件中搜索匹配。
我想通過使用下面的命令將特定文件重定向到bash shell中的「查找」命令。如何將特定文件傳送到查找命令?
ls sample.txt | find -name "*ple*"
我想搜索的子串ple
中,我已通過文件名sample.txt
,但上面的命令是從目錄中的所有文件檢查了比賽。它不是在我使用管道傳遞的特定文件中搜索匹配。
您需要使用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'
這會檢查字符串「ple」的'sample.txt'的_contents_,而不是文件名。例如,你必須使用here-string來做你想做的事:'grep'ple'<<<'/ directory/sample.txt'' –
你是對的。我誤解了這個問題,並會糾正我的答案。 –
好的,糾正了我的答案,謝謝你抓住我的錯誤。順便說一句,你的解決方案非常優雅。 –
請編輯您的Q可展示的是從你的操作您所需的輸出。如果你正在爲你的文件做'ls -l',只要執行'find -name'* ple'-ls'('find'不是爲了讀取它的'stdin')。祝你好運。 – shellter
['ls'不是編程使用的合適工具](http://mywiki.wooledge.org/ParsingLs)。與你想要一起使用的工具相比,你的實際目標是什麼? –
爲什麼你認爲你需要使用'find'?這應該是'grep ple sample.txt' – Barmar