OS : Debian 5.0 (/var/log/installer/lsb-release)
好吧, 我知道可以先用 find 找出目錄下所有的檔案, 再用 file 這個指令判斷檔案類型, 再加上 grep 過濾出 text, 這樣我就找出所有的文字檔了
find / -type f -exec file {} \; | grep "text"
但是會出現一些錯誤訊息, 就把它丟到"空"裏面吧
find / -type f -exec file {} \; 2> /dev/null | grep "text"
然後我記得好像可以每一行取出第一個字串, 也就是我所需要的檔案名稱, 查了查用 awk 就可以了
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}'
此時, 我有了根目錄下所有文字檔的完整路徑與名稱, 但指令也夠長了, 而且故事還沒完啊, 我要怎麼把這些檔案"吐"給 grep 做搜尋呢? 直接"管線"好像不行, 但依稀記得有個 xargs 可以用, 於是指令又更長了
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword'
大功告成, 終於可以搜尋所有文字檔中某個關鍵字了, 但又有一些錯誤訊息, 再把它丟到"空"裏面
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword' 2> /dev/null
再來 awk 一次, 取出搜尋過後的檔案名稱
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword' 2> /dev/null | awk -F":" '{print $1}'
但是會有重複的檔案出現, 我只要出現一次就好了, 該怎麼辦才好, 忽然一眼瞥見有個 uniq 指令
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword' 2> /dev/null | awk -F":" '{print $1}' | uniq
耶, 終於得到我想要的結果了, 真是太高興了, 但這一串指令也未免太長了吧, 誰記得住啊, 應該有更好的方式吧...
好吧, 我知道可以先用 find 找出目錄下所有的檔案, 再用 file 這個指令判斷檔案類型, 再加上 grep 過濾出 text, 這樣我就找出所有的文字檔了
find / -type f -exec file {} \; | grep "text"
但是會出現一些錯誤訊息, 就把它丟到"空"裏面吧
find / -type f -exec file {} \; 2> /dev/null | grep "text"
然後我記得好像可以每一行取出第一個字串, 也就是我所需要的檔案名稱, 查了查用 awk 就可以了
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}'
此時, 我有了根目錄下所有文字檔的完整路徑與名稱, 但指令也夠長了, 而且故事還沒完啊, 我要怎麼把這些檔案"吐"給 grep 做搜尋呢? 直接"管線"好像不行, 但依稀記得有個 xargs 可以用, 於是指令又更長了
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword'
大功告成, 終於可以搜尋所有文字檔中某個關鍵字了, 但又有一些錯誤訊息, 再把它丟到"空"裏面
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword' 2> /dev/null
再來 awk 一次, 取出搜尋過後的檔案名稱
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword' 2> /dev/null | awk -F":" '{print $1}'
但是會有重複的檔案出現, 我只要出現一次就好了, 該怎麼辦才好, 忽然一眼瞥見有個 uniq 指令
find / -type f -exec file {} \; 2> /dev/null | grep "text" | awk -F":" '{print $1}' | xargs grep 'keyword' 2> /dev/null | awk -F":" '{print $1}' | uniq
耶, 終於得到我想要的結果了, 真是太高興了, 但這一串指令也未免太長了吧, 誰記得住啊, 應該有更好的方式吧...
沒有留言:
張貼留言