Neden * main.o bulabilirim ama * .o?

19

Bu doğru:

$ find . -name *main.o
./main.o

Peki, neden *.o bulamıyorum?

$ find . -name *.o
find: paths must precede expression: main.o
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
    
sordu Tom Brito 16.10.2014 01:39

2 cevap

46

Muhtemelen, *.o ile eşleşen bir dosyadan daha fazlası vardır, sadece bir dosya *main.o eşleşir, bu nedenle, ilk durumda kabuk genişletme çalışır:

$ find . -name main.o

ve bu işe yarıyor. İkinci durumda:

$ find . -name file1.o main.o

Ve bu yüzden hatanın var.

Bunu önlemek için, her iki komutta expression alıntı yapmalısınız:

$ find . -name '*.o'
$ find . -name '*main.o'
    
verilen cevap Lety 16.10.2014 01:55
17

Dosya desenini tırnak içine alın. Aksi halde, * kabuk tarafından genişletilir (bulmadan önce dosyaların listesine giderilir), kafa karıştırıcı bul.

find . -name "*.o"
    
verilen cevap Stefan Haustein 16.10.2014 01:53

Etiketlerdeki diğer soruları oku