2017-02-14 2 views
0

J'ai appris comment utiliser un script hier qui afficherait tous les fichiers contenant le texte entré.Linux bash: trouver des dossiers contenant du texte spécifique

echo "enter serial number" 
read number 

matchfiles=(`find /home/data_files -maxdepth 1 -name "*$number*" -type f -exec basename {} \;`) 

COUNTER=${#matchfiles[@]} 

echo serial number data folder found: 
until [ $COUNTER -lt 0 ]; do 
echo ${matchfiles[$COUNTER]} 
let COUNTER-=1 
done 

Si le numéro 12 a été entré génèrerait tous les fichiers avec le numéro 12 contenu dans le nom du fichier »

Ex:

enter serial number 
12 
file12.fee 
12file.foo 
file.12 

Im la recherche d'un moyen de faire exactement même chose mais avec des répertoires

de sorte que la sortie serait

enter serial number 
12 
folder12 
12folder 

J'ai besoin des noms de dossiers contenus dans un tableau afin qu'ils puissent être utilisés plus tard pour manipuler les données qu'ils contiennent.

+0

'-type d' limitera la recherche aux noms dir. – karakfa

+0

@karakfa Bien sûr ... haha. Je vous remercie! –

Répondre

1
find {path} -name "*$number*" -type d -exec readlink -f {} \; 

si votre option {chemin} est relatif, vous voulez readlink -f est de convertir des chemins relatifs au chemin absolu. Vous pouvez ajouter -maxdepth si vous souhaitez restreindre la recherche récursive dans le chemin du répertoire.