日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

一网打进Linux下那些查找命令

發(fā)布時間:2025/3/15 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一网打进Linux下那些查找命令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

查找是我們每天都在做的事情,早上醒來找下手機(jī),出門之前查下公交,坐下之后查下資料,分析數(shù)據(jù)查下模式。

查找文件,查找信息,查找錯誤是應(yīng)用起來更為具體的一些工作,而Linux命令行為我們提供了很多快捷強(qiáng)大的查找方式。

命令/可執(zhí)行程序查找

whereis program_name: 會在系統(tǒng)默認(rèn)安裝目錄(一般是有root權(quán)限時默認(rèn)安裝的軟件)查找二進(jìn)制文件、源碼、文檔中包含給定查詢關(guān)鍵詞的文件。(默認(rèn)目錄有?/bin,?/sbin,?/usr/bin,?/usr/lib,?/usr/local/man等類似路徑)

which program_name: 會給出所有在環(huán)境變量中的程序的路徑,一來方便知道運行的程序在哪,二來方便修改。(PATH和path,傻傻分不清)

比如vim which sp_pheatmap.sh就可以直接修改繪制熱圖的腳本,cpwhich sp_pheatmap.sh.可以直接把源碼拷貝到當(dāng)前目錄,省去了寫全路徑的麻煩。

如果運行which bwa,系統(tǒng)返回是?/usr/bin/which: no bwa in (/home/usr/bin:/bin)則說明bwa沒有放置在環(huán)境變量中,不可以直接寫名字調(diào)用。

普通文件快速定位 locate

locate是快速查找定位文件的好方法,但其依賴于updatedb建立的索引。而updatedb一般是每天運行一次,所以當(dāng)天的新文件是索引不到的。

如果有根用戶權(quán)限,可以手動運行updatedb做個更新,然后再locate bwa。

(個人用戶也可以構(gòu)建自己的updatedb, 使用locate在局部環(huán)境中查找。)

普通文件多條件查找 find

find / -name bwa可以搜索根目錄下所有名字為bwa的文件

運行上面的命令時會輸出很多Permission denied,是因為 作為普通用戶,無權(quán)限訪問一些目錄,因此會有提示輸出,可以使用find / -name bwa 2>/dev/null重定向標(biāo)準(zhǔn)錯誤到空設(shè)備,報錯信息就被扔掉了,還不影響正常輸出。

按時間查找

我們開發(fā)的在線畫圖網(wǎng)站 (www.ehbio.com/ImageGP),為了追蹤每天用戶使用時碰到了什么問題,需要每天定時去查看日志。

這個命令find . -name *.log -mmine -60可以查看當(dāng)前目錄下(包括所有子目錄)一小時內(nèi)修改的日志文件。再配合head就可以查看每個日志文件的內(nèi)容,以方便查看使用過程中出現(xiàn)了哪些錯誤,如何增加提示或修改畫圖程序。

正是有了這個利器,前臺的錯誤提示中才出現(xiàn)了這么一句話,如果您核對后數(shù)據(jù)和參數(shù)沒問題,請過1天再進(jìn)行嘗試。若是程序問題,我們通常會在1天內(nèi)修復(fù)。

當(dāng)然后臺數(shù)據(jù)都是用時間戳存儲的,而且若無報錯,數(shù)據(jù)會直接刪掉,有報錯的才會保留日志,不會泄露用戶信息,這點大家不用擔(dān)心。

現(xiàn)在畫圖網(wǎng)站越來越穩(wěn)定,出現(xiàn)的問題越來越少,前臺提示也越來越完善,希望大家使用時多看下提示,查看日志的頻率也少了,就使用find . -name *.log -mtime -1查看從現(xiàn)在起24小時內(nèi)的日志了。

這個也有個問題,每次查看的時間可能不一致,會漏查或有重疊,于是在某次查看完日志后,使用touch check在當(dāng)前目錄下新建了個空文件。以后再查日志文件時,只要使用find . -name *.log -newer check就可以獲得所有上次查看過之后的新日志。每次查看完之后,都做個書簽,就方便多了。

慢慢發(fā)現(xiàn)有空日志文件, 使用find . -name *.log -newer check -size +0過濾掉, 只保留大小大于0的文件。就這樣在小伙伴聰明勤奮地維持下,我們繪圖網(wǎng)站2年間為大家提供了近30萬次服務(wù)。(畫圖手冊 | ImageGP:今天你“plot”了嗎?)

按類型和大小查找

如果我想得到當(dāng)前目錄下所有png和jpg照片呢?

使用?find . \( -name "*.png" -o -name "*.jpg" \) | less

或?find . -regex ".*\(\.png\|\.jpg\)$"

find . -type f -size +100G可以獲取大小超過100G的文件。

限制查找深度

只看當(dāng)前目錄2層子目錄內(nèi)的文件find . -maxdepth 2 -name *.log。

查看不是log結(jié)尾的文件find . -not -name *.log。還有更多組合操作,詳見find文檔 (我在群里扔了一個關(guān)于查找的問題,結(jié)果…)。

按文件內(nèi)容查找 grep

find可以查找包含某句話的文件嗎?還是拿我們的日志說事吧,find . -name *.log -exec grep -l 'Error' {} \;就可以返回所有包含Error單詞的文件名。

find . -name *.log | xargs grep -l 'Error'也可以。

grep -rl 'Error' *也可以,不加-l還可以順便返回匹配的行。

匹配行的前后行

grep -A 5 -B 1 'Bioinfo' ehbio.log可以查看匹配行的前1行(B, before)和后5行(A, after)。

匹配次數(shù)

grep -c 'Bioinfo' ehbio.log可以統(tǒng)計包含Bioinfo的行數(shù)

grep -ci 'Bioinfo' ehbio.log則會在匹配時忽略大小寫。

統(tǒng)計FASTA序列中的序列數(shù)?grep '^>' ehbio.fa

統(tǒng)計FASTQ序列中的序列數(shù)?grep '^+$' ehbio.fq。(^表示以什么開頭,$表示以什么結(jié)尾)。

獲取未匹配行

grep -v 'Bioinfo' ehbio.log,讀讀手冊(man grep),可以看到更多參數(shù)使用。

序列提取

假設(shè)有個基因列表文件 (ID),有個單行序列的FASTA文件 (ehbio.fa), 運行如下命令grep -A 1 -Fw -f id ehbio.fa | grep -v -- '--'就可以批量提取序列了。

-f id表示把id文件中的每一行作為一個匹配模式。-F表示匹配模式作為原始字符串,而非正則表達(dá)式,這是以防有特殊字符被解析。-w則表示作為一個單詞匹配,即假如id中有Sox2,那么它會匹配Sox2,也會匹配Sox21;如果加了-w,則不會匹配Sox21。

更好的序列批量提取見?awk的使用。

模式匹配

grep強(qiáng)大的功能是支持正則匹配,默認(rèn)使用基本正則表達(dá)式,-E使用擴(kuò)展的正則表達(dá)式,-P使用perl格式的正則表達(dá)式。

比如想去掉文件中所有的空行g(shù)rep -v '^$' ehbio.fa >ehbio.clean.fa;

從公眾號文章中搜索跟文章寫作相關(guān)的文章?grep 'writ.*' *.md?(可以匹配write, writing等字);

正則表達(dá)式就比較多了,具體可以看http://mp.weixin.qq.com/s/4lUiZ60-aXLilRk9–iQhA。

總結(jié)

以上是生活随笔為你收集整理的一网打进Linux下那些查找命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。