Devo trovare tutte le directory che contengono un certo personaggio nel loro nome e stamparle.
Quindi se ho le directory:
abc cde fgh
E cerco "c" dovrei ottenere:
abc
cde
Devo trovare tutte le directory che contengono un certo personaggio nel loro nome e stamparle.
Quindi se ho le directory:
abc cde fgh
E cerco "c" dovrei ottenere:
abc
cde
Risposte:
I seguenti comandi eseguono la query richiesta:
find -name "*c*" -type d
-name "*c*"
- con nome contiene la lettera c
-type d
- che sono una directoryÈ possibile eseguire il comando su un'altra directory ( /full/path/to/dir
) utilizzando:
find /full/path/to/dir -name "*c*" -type d
Maggiori informazioni nixCraft trova il comando
Se globstar
è abilitato puoi usarlo
for d in **/*c*/; do echo $d; done
Il primo **
corrisponderà a qualsiasi percorso di sottodirectory arbitrario. Quindi *c*/
con le cartelle delle corrispondenze con il carattere c al suo interno
Se non è abilitato, puoi abilitarlo con shopt -s globstar
globstar
- Se impostato, il modello
**
utilizzato in un contesto di espansione del nome file corrisponderà a tutti i file e a zero o più directory e sottodirectory. Se il modello è seguito da a/
, corrispondono solo le directory e le sottodirectory.
-print
non è necessario, è l'azione predefinita. Inoltre, per iniziare solo con la directory corrente, è possibile che non si dia un percorso perché.
è il percorso predefinito. Buona risposta però. I caratteri jolly possono essere una trappola come in questa domanda , citarli è molto importante qui.