Linux

ack.pl 工具和 ack.pl 標誌

  • April 1, 2015

我正在使用 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/"或類似的東西來執行此操作。

引用自:https://unix.stackexchange.com/questions/189289