[Linuxtrent] Re: comando find

  • From: Flavio Stanchina <flavio@xxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 01 Oct 2008 00:17:29 +0200

Andrea Lusuardi - UoVoBW wrote:
> On Tue, 30 Sep 2008 22:52:59 +0200
> "Aimar Marco" <marco.aimar@xxxxxxxxx> wrote:
> 
>> Buonasera a tutti,
>> qualcuno sa "commentarmi" la differenza tra l'uso del comando
>> find -name "nomeFile"
>> e l'uso senza le virgolette
>> find -name nomeFile
>>
>> Per esempio sul mio computer
>> find . -name 'prog*'
>> mi ritorna 17 elementi mentre
>> find . -name prog*
>> solo 1
> 
> credo, ma credo e basta, che con le "" tu passi a find il parametro di
> name come nome che _lui_ interpreta per fare il match, mentre senza fa
> match _prima_ la tua shell, e quindi find si trova in pasto
> l'espansione di prog*, ovvero il file nella dir corrente.

E' esattamente questa la differenza, la si può verificare passando lo
stesso parametro al comando echo:

$ echo "prog*"
prog*

$ echo prog*
progetto.txt

(ammettendo che nella directory corrente esista un file di nome "progetto.txt")

Attenzione ad una potenziale fonte di confusione: se nessun file combacia
con la wildcard, la shell passa l'argomento così com'è, quindi se non ci
fosse alcun file prog* nella directory corrente il comando funzionerebbe
come Marco si aspettava. Questo genere di inconvenienti è particolarmente
insidioso negli script...

Attenzione alla differenza tra 'apici' e "virgolette": in entrambi i casi
le wildcard non vengono espanse, ma tra virgolette le variabili tipo $HOME
vengono espanse. Rimando alla documentazione della shell per i dettagli.

-- 
Ciao, Flavio

Those who do not understand Unix are condemned to reinvent it, poorly.
-- Henry Spencer
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: