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]
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]
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'
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"
Etiketlerdeki diğer soruları oku command-line find