Ich habe eine Linux-Frage, die ich nicht lösen kann. Ich habe versucht, sie zu lösen – ich habe auch versucht, das Forum zu durchsuchen, habe aber keinen Hinweis oder eine Lösungsmöglichkeit gefunden.
Frage:
Schreiben Sie Befehle, die die Anzahl der Dateien in den Ordnern „Vegetables“ und „Fruits“ zusammenzählen. Die Antwort muss in einer CounterFood-Datei gespeichert werden. Mehrere Befehle sind zulässig.
Nachdem Sie diese Befehle ausgeführt haben, werden Sie dazu aufgefordert:
Die Gesamtzahl der Zeichen in den Namen der Dateien in den Ordnern „Vegetables“ und „Fruits“ muss zur Datei „CounterFood“ hinzugefügt werden. Es können mehrere Befehle verwendet werden.
Versuchen
Ich habe darüber nachgedacht, einen arithmetischen Einschub durchzuführen, habe aber keinen solchen Befehl gefunden.
ls -l . Vegetables Fruits | egrep -c '^-' >> CounterFood
Ich habe versucht zu zählen, wie viele Dateien es gab - aber ich konnte die beiden Ordner nicht zusammen zählen. Dann kam ich auf Folgendes - meine Idee ist, auf die Ordner zuzugreifen - alle Dateien zu finden - und sie dann zu zählen
find Vegetables Fruits -type f | wc - >>CounterFood
Die Fortsetzung der Frage hängt direkt mit dem Anfang zusammen. Aber der Anfang hat bei mir nicht geklappt - ich kann nicht verstehen, warum.
Antwort1
Teil 1
find Vegetables Fruits -type f -printf "x" | wc -c > CounterFood # Print "x" for each filename and count them
Teil 2
Wenn du meintesthinzufügendann wird das funktionieren
namelen=$(find Vegetables Fruits -type f -printf "%f" | wc -c) # Characters in file names
counterfood=$(cat CounterFood) # Previous total
echo $((namelen + counterfood)) > CounterFood # Add them together
Wenn du meintestAnhängendann wird das funktionieren
find Vegetables Fruits -type f -printf "%f" | wc -c >> CounterFood # Characters in file names
Antwort2
Gesamtzahl der Dateien in beiden Ordnern:
expr `ls -l Vegetables | sed 1d | wc -l` + `ls -l Fruits | sed 1d | wc -l` >> CounterFood
Gesamtzahl der Zeichen der Dateinamen in beiden Ordnern:
expr `ls Vegetables | wc -c` + `ls Fruits | wc -c` >> CounterFoods
Hoffe, das hilft!