Comment puis-je montrer la bonne réponse?

Je travaille sur une école et la question est de: Utiliser la commande ls pour lister les fichiers dans le répertoire ‘apache2 / mods-available’. Ne listez que les fichiers commençant par ‘a’ et ayant l’extension de fichier ‘.conf’. Lister un fichier par ligne dans le répertoire. Entrez votre code bash dans $ () pour l’exécuter et renvoyer la réponse par exemple: ANSWER = $ (find. -Name ‘filename’)

J’ai essayé de résoudre le problème comme ceci:

 Answer = $(ls -1 apache2/mods-available/a*.conf) 

Et que je reçois cette réponse:

 apache2/mods-available/actions.conf apache2/mods-available/alias.conf apache2/mods-available/autoindex.conf 

C’est malheureusement faux car la réponse est la suivante:

 actions.conf alias.conf autoindex.conf 

Quelqu’un a-t-il une idée de ce qui ne va pas? Merci 🙂

Vous pouvez utiliser le script suivant

 Answer=$(find apache2/mods-available/ -maxdepth 1 -name 'a*.conf' -exec basename {} \;) 

maxdepth est de rechercher dans le répertoire 1 profondeur

-exec le nom de base {} \; est d’obtenir le nom

vous pouvez avoir plusieurs commandes dans votre $() . donc lancez simplement:

 Answer=$(cd apache2/mods-available; ls -1 "a*.conf") 
  • ne pas mettre des espaces autour =
  • citer les caractères génériques (ils ne seront donc pas étendus aux fichiers correspondants dans votre répertoire actuel )
  • ne pas parsingr ls

Merci à vous tous! Cette réponse fonctionne réellement pour moi:

 $(ls apache2/mods-available/a*.conf | cut -d/ -f3) 

Essayez avec Answer=$(ls -1 a*.conf)