Linux
ack.pl 工具和 ack.pl 標誌
我正在使用 ack.pl 工具來搜尋文件中的字元串或 IP
ack.pl 的官方網站是 - http://beyondgrep.com/documentation/
ack.pl CLI 範例(想在 /etc 下的文件中查找字元串 STRING_TO_FIND)
/tmp/ack.pl -Q -a -l --max-count=1 STRING_TO_FIND /etc
但有時 ack.pl 卡在文件上:
---S--l--- 1 root root 0 Mar 10 04:25 /opt/POP_lock
從 MAN paget “S” attr 表示:
使用大寫“S”而不是小寫“s”告訴文件系統立即將文件寫入磁碟,而不是將其儲存在緩衝區中。(還要注意,這次我們留下了“s”屬性,所以我們現在為這個文件設置了兩個屬性。)
所以我的問題是:
ack.pl 如何忽略帶有“S”的文件,或者應該忽略帶有“S”的文件的 ack.pl 標誌是什麼?
您確定是“
S
”導致了問題嗎?正如我在對您之前的問題的回答中所解釋的那樣,“l
”表示您的作業系統和文件系統支持強製文件鎖定,並且為此文件啟用了強製文件鎖定。我懷疑您作為範例提供的兩個文件(在這個問題和上一個問題中)的名稱都以_lock
. 這些文件可能是——你猜怎麼著?——鎖定! 這可能會阻止ack
(或任何其他程序)讀取它們。(以上是對“為什麼不能
ack
讀取這些文件?”這個問題的回答,我知道,你沒有問。)
l
使用_find /etc -perm -2000 ! -perm -010
命令(我在對您上一個問題的回答中提出)。查看是否所有文件的名稱都以
_lock
. 然後做find /etc -name "*_lock" –ls
驗證所有
_lock
文件都l
設置了“ ”模式位。如果存在一對一的對應關係(或者,通常情況下,如果沒有_lock
您需要搜尋的文件),請按文件名模式將它們從搜尋中排除。我無權訪問要
ack
測試的副本,但是,從文件來看,您可以使用--ignore-file="match:/.*_lock/"
或類似的東西來執行此操作。