Belirtilen simli desen içermeyen faylları tapmaq üçün necə?

foo sözünü ( grep istifadə) olmayan mövcud foo faylları necə tapmaq olar?

407
17 нояб. Sinedil Kumar tərəfindən qoyulmuş 17 noyabr. 2009-11-17 14:07 '09 at 14:07 'da 2009-11-17 14:07
@ 11 cavab

Aşağıdakı əmr foo şablonu olmayan bütün faylları verir:

 find . -not -ipath '.*svn*' -exec grep -H -E -o -c "foo" {} \; | grep 0 
14
17 нояб. Sentil Kumar tərəfindən verilmiş cavab noyabrın 17-də 2009-11-17 15:21 '09 saat 15:21 'da 2009-11-17 15:21

Əgər --files-without-match -L (və ya --files-without-match ) variantları varsa:

border=0
 $ grep -L "foo" * 
656
17 нояб. cavab ghostdog74 17 noyabrda verilir . 2009-11-17 14:47 '09 at 14:47 2009-11-17 14:47

ack . Bu sizin üçün avtomatik olaraq .svn , sizə Perl müntəzəm ifadələr verir və bir Perl proqramının sadə bir yüklənməsidir.

Aradığınız şeyə bərabər olmalıdır:

 ack -L foo 
42
09 апр. Cavab Andy Lester 09 apr tərəfindən verilir . 2010-04-09 01:37 '10 at 1:37 2010-04-09 01:37

Aşağıdakı əmr svn qovluqlarını ikinci grep istifadə edərək svn ehtiyacını aradan qaldırır.

 grep -rL "foo" .*/*.ext | grep ext:0 

grep -v cəhdləri mənə foo olmadan bütün xətləri verdi.

6
17 дек. johnny 17 dec tərəfindən verilmiş cavab . 2009-12-17 01:30 '09 saat 01: 30-da 2009-12-17 01:30

Açar səhv hesabatı

@Tukan şərh edildiyi kimi Ag üçün açıq-aşkar bir səhv hesabatı var -L / - --files-without-matches :

Hata hesabatında çox az irəliləyiş olduğundan, -L seçimi -L aşağıda qeyd edilir və səhv həll olunmayana qədər deyil. Bunun əvəzinə, bu axında təqdim olunan müxtəlif yanaşmaları istifadə edin. Hata hesabatı ilə əlaqədar şərhə toxunan [vurğulamaq]:

Bununla əlaqədar hər hansı bir yeniləmə? -L Faylın birinci xəttindəki oyunları tamamilə məhəl qoymur. Görünür, əgər bu tezliklə müəyyənləşməsə, bayrağın tamamilə silinməsinə baxmayaraq, əslində reklam kimi işləmir .


Silver Searcher - Ag (nəzərdə tutulan funksiya - Hata Hesabatına baxın)

grep üçün güclü bir alternativ olaraq grep Silver Searcher - Ag istifadə edə bilərsiniz:

Kod axtarış aracı sürətə vurğu ilə ack kimidir.

Əgər siz insanlara baxırsınızsa, -L və ya --files-without-matches tapa bilərsiniz:

 ... OPTIONS ... -L --files-without-matches Only print the names of files that don´t contain matches. 

Yəni, cari foo uyğun olmayan faylları təkrar-təkrar axtarmaq üçün:

 ag -L foo 

foo uyğun olmayan fayllar üçün yalnız cari qovluğu axtarmaq üçün, təkrar qeyd üçün --depth=0 :

 ag -L foo --depth 0 
2
26 июля '18 в 18:08 2018-07-26 18:08 Cavab 26 iyul '18, saat 18:08 'də 2018-07-26 18:08' ye verilir

find *20161109* -mtime -2|grep -vwE "(TRIGGER)"

"Bul" altında bir filtr və "grep -vwE" bölməsində istisna xəttini təyin edə bilərsiniz. Zamanla dəyişiklikləri filtr etməlisinizsə axtarışda istifadə edin.

1
10 нояб. Cavab zandeep 10 noyabrda verilir. 2016-11-10 22:31 '16 saat 10:31 'da 2016-11-10 22:31

Mənim grepim -L seçimi yoxdur. Buna nail olmaq üçün bir həll yolu tapıram.

Fikirlər:

  • axtarış dizesini ehtiva bütün fayl adını txt1.txt olaraq birləşdirmək.
  • txt2.txt-dəki bütün fayl adını silin.
  • diff əmri ilə iki dump fayl arasında fərq yaratmaq.

     grep 'foo' *.log | cut -c1-14 | uniq > txt1.txt grep * *.log | cut -c1-14 | uniq > txt2.txt diff txt1.txt txt2.txt | grep ">" 
1
08 мая '16 в 6:37 2016-05-08 06:37 cavab 08 May '16 'da 6:37 2016-05-08 06:37 tarixində user6305682 tərəfindən verilir
 grep -irnw "filepath" -ve "pattern" 

və ya

 grep -ve "pattern" < file 

yuxarıdakı əmr bizə nəticə verəcəkdir, çünki -v əks axtarış modelini tapır

-3
30 апр. Cavab Jay 30 Aprel tarixində verilir 2014-04-30 21:21 '14 at 21:21 2014-04-30 21:21

Aşağıdakı əmr, "foo" alt şeridini ehtiva edən sətirləri süzməyə kömək edə bilər.

 cat file | grep -v "foo" 
-3
11 окт. 11 oktyabrda walkerlin tərəfindən verilmiş cavab 2013-10-11 14:13 '13 'da 14:13 2013-10-11 14:13

bağlı digər suallar və ya sual soruşun