Domanda

Sto cercando i file degli script di shell installati sul mio sistema, ma Trovare non funziona:

$ find /usr -name *.sh

Ma so che ci sono un sacco di script là fuori.Ad esempio:

$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh  
/usr/local/lib/tkConfig.sh

Perché no? Trovare lavoro?

È stato utile?

Soluzione

Prova a citare il carattere jolly:

$ find /usr -name \*.sh

O:

$ find /usr -name '*.sh'

Se ti capita di avere un file che corrisponde *.sh nella directory di lavoro corrente, il carattere jolly verrà espanso prima che find lo veda.Se ti capita di avere un file chiamato tkConfig.sh nella tua directory di lavoro, il file Trovare il comando si espanderebbe in:

$ find /usr -name tkConfig.sh

che troverebbe solo i file denominati tkConfig.sh.Se avessi più di un file corrispondente *.sh, riceverai un errore di sintassi da Trovare:

$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list

Ancora una volta, il motivo è che il carattere jolly si espande su entrambi i file:

$ find /usr -name tclConfig.sh tkConfig.sh

Citare il carattere jolly impedisce che venga espanso prematuramente.

Un'altra possibilità è che /usr o una delle sue sottodirectory sia un collegamento simbolico. Trovare normalmente non segue i collegamenti, quindi potrebbe essere necessario il file -seguire opzione:

$ find /usr -follow -name '*.sh'

Altri suggerimenti

Su alcuni sistemi (Solaris, ad esempio), non esiste un'azione predefinita, quindi è necessario aggiungere il comando -print.

find /usr -name '*.foo' -print

Per trovare file sui tuoi dischi, sniglia per usare "individua" invece che è istantaneo (guarda in un indice costruito quotidianamente) il tuo esempio sarebbe:

locate '/usr*.sh'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top