Ich arbeite an einem Schulmaterial und die Frage ist: Verwenden Sie den Befehl ls, um die Dateien im Verzeichnis 'apache2 / mods-available' aufzulisten. Listen Sie nur Dateien auf, die mit 'a' beginnen und die Dateierweiterung '.conf' haben. Listen Sie eine Datei pro Zeile im Verzeichnis auf. Geben Sie Ihren Bash-Code in $ () ein, um ihn auszuführen, und geben Sie die Antwort zurück, zum Beispiel: ANTWORT = $ (find. -Name 'Dateiname')

Ich habe versucht, das Problem folgendermaßen zu lösen:

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

Und dann bekomme ich diese Antwort:

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

Es ist leider falsch, weil die richtige Antwort lautet:

actions.conf
alias.conf
autoindex.conf

Hat jemand eine Idee, was los ist? Vielen Dank :)

1
Georges Kayembe 18 Apr. 2018 im 08:05

3 Antworten

Beste Antwort

Danke an alle! Diese Antwort funktioniert tatsächlich für mich:

$(ls apache2/mods-available/a*.conf | cut -d/ -f3)
0
Georges Kayembe 20 Apr. 2018 im 11:03

Sie können das folgende Skript verwenden

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

Maxdepth ist die Suche in der Tiefe des Verzeichnisses 1

-exec Basisname {} \; ist den Namen zu bekommen

0
buddha 18 Apr. 2018 im 07:38

Versuchen Sie es mit Answer=$(ls -1 a*.conf)

-1
arjun 18 Apr. 2018 im 07:33