Perché i risultati del comando find differiscono quando il percorso è. e quando è ./*?
Quando digito find . -name "so*"ottengo tutti questi risultati:
./sort
./.cache/evolution/sources
./.config/evolution/sources
./.local/share/sounds
Ma quando scrivo find ./* -name "so*"ottengo solo ./sort.
Da quello che so quando uso .nel comando chiedo di trovare i file che iniziano con "così" nella mia directory corrente, ma quando lo uso ./*mostra solo il ./sortfile e non mostra i file nascosti, quindi mi chiedo cosa l'aggiunta /*effettivamente fa e come cambia la mia query / istruzione.
Risposte
find . significa ricerca dalla directory corrente.
find ./*significa cercare da tutti i file e le directory nella directory corrente che corrispondono a un file *.
Tuttavia, *è espanso dalla shell, quindi findpensa che tu abbia davvero digitato un comando come:
find ./sort ./another-dir ./another-file ./etc -name "so*"
La tua osservazione è corretta. Per impostazione predefinita, un'interlinea *esclude file o directory che iniziano con a ., quindi non vengono nemmeno visti da find. Non si tratta solo di file nascosti, ma anche delle directory corrente e principale, quindi di .*solito non è una buona idea!