Yritän ymmärtää, miten find -maxdepth 0
-vaihtoehtoa käytetään.
Minulla on alla oleva hakemistorakenne.
--> file1 --> parent --> child1 --> file1 --> file2 --> child2 --> file1 --> file2 --> file1
Suoritan nyt find
-komennon alla esitetyllä tavalla.
find ./parent -maxdepth 0 -name "file1" find ./ -maxdepth 0 -name "file1" find . -maxdepth 0 -name "file1"
Mikään yllä olevista find
-komennoista tiedosto1 palautetaan.
Näen alla olevat tiedot find
-sivulta.
-maxdepth 0 tarkoittaa, että testejä ja toimintoja sovelletaan vain komentoriviargumentteihin.
Etsin joitain esimerkkejä vaihtoehdolla -maxdepth 0
ja en löytänyt oikeaa esimerkkiä.
Oma find
version is,
find --version find (GNU findutils) 4.4.2
Voiko joku antaa minulle viitteitä, joissa tapauksissa -maxdepth 0
-vaihtoehto olisi hyödyllinen ?
MUOKKAA
Kun suoritan alla olevan komennon, saan file1 listataan kahdesti. Onko tämä tarkoitus toimia tällä tavalla?
find . file1 -maxdepth 1 -name "file1" ./file1 file1
vastaus
Oletetaan, että nykyisessä hakemistossa on file1
. :
$ find . -maxdepth 0 -name "file1" $ find . file1 -maxdepth 0 -name "file1" file1
Katsotaanpa nyt mitä dokumentaatiossa sanotaan:
-maxdepth 0 tarkoittaa onl y käytä testejä ja toimintoja komentoriviargumentteihin.
Ensimmäisessä yllä olevassa esimerkissä vain hakemisto .
on lueteltu komentorivillä. Koska .
ei ole nimeä file1
, mitään ei ole luettelossa lähdössä. Toisessa yllä olevassa esimerkissä sekä .
että file1
on lueteltu komentorivillä ja koska file1
vastaa -name "file1"
, se palautettiin tulosteessa
Toisin sanoen -maxdepth 0
tarkoittaa do ei hakuhakemistoja tai alihakemistoja. Sen sijaan, että etsit vain vastaavaa tiedostoa komentorivillä nimenomaisesti lueteltujen tiedostojen joukosta.
Esimerkeissä vain hakemistot lueteltiin komentorivillä, eikä yksikään niistä nimetty file1
. Ei siis lähtöä.
Yleensä komentorivillä voidaan nimetä monia tiedostoja ja hakemistoja. Esimerkiksi tässä kokeillaan komentoa find
, jossa on 11 tiedostoa ja hakemistoa komentorivillä:
$ ls d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 $ find d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 -maxdepth 0 -name "file1" file1
Päällekkäin polut
Harkitse:
$ find . file1 -maxdepth 0 -iname file1 file1 $ find . file1 file1 -maxdepth 0 -iname file1 file1 file1 $ find . file1 file1 -maxdepth 1 -iname file1 ./file1 file1 file1
Kuten Ramesh huomauttaa, ilmeisesti find
seuraa jokainen komentorivillä määritetty polku ja etsi vastaavuuksia, vaikka polut johtavat samaan tiedostoon, kuten kohdassa . file
, tai vaikka polut olisivat tarkkoja kopioita, kuten kohdassa file1 file1
.
kommentit
Vastaa
Jos haluat etsiä tiedostoja (ei hakemistoja) ei-rekursiivisesti hakemiston sisällä:
find . -maxdepth 1 -type f -name "file1" # ./file1
-maxdepth 0
ei etsi hakua . Se yrittää sovittaa yhteen vain tiedosto- / hakemistonimet, jotka olet antanut argumentteina kohdassa find
. Esimerkiksi. Yllä olevassa lauseessa yritä sovittaa arvo 0
käyttämällä file1
arvoon .
joka ei täsmää. Jos *
välitetään .
-kohdan sijaan, bash korvaisi *
nykyisen hakemiston tiedostoluettelolla mikä palauttaisi ottelun.
find * -maxdepth 0 -name "file1"
.*
luetteloi kaikki nykyisen hakemiston tiedostot komentorivillä.find
tarkastelee jokaista polku komentorivillä ja raportit ottelut jokaisesta, vaikka ne olisivatkin kaksoiskappaleita.