Ergebnisse von find in Array schreiben

Eggmann

Enthusiast
Thread Starter
Mitglied seit
09.11.2005
Beiträge
616
Hallo zusammen,
ich bastel gerade ein bash-Script, das in einem einem Verzeichnis alle Unterverzeichnisse findet, die in den letzten 60 Tagen nicht mehr verändert wurden. Eine Version läuft schon, allerdings werden dabei immer zwei Dateien für die Verarbeitung des Scripts auf die HDD geschrieben.
Ich habe nun vor das Script soweit abzuändern, dass alle Informationen in Variablen oder Arrays stehen.
Das derzeitige Problem an der Sache: wie kann ich die Ergebnisse, die mir find liefert in ein Array schreiben?

Hat jmnd. Ideen?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ja, nichts leichter als das:

Code:
list=`ls -la` // oder eben Dein find rein. Die Ausgabe wird in die Variable list geschrieben
echo $list

'cuda
 
Erstmal danke für die Antwort, bringt aber leider nicht die gewünscht Funktion mit sich. Vielleicht habe ich mich auch falsch ausgedrückt.
Bei deiner Lösung habe ich alle gefundenen Datensätze in der Variable. Ich möchte es aber erreichen, dass jeder gefundene Datensatz in einem Feld in einem Array steht, da ich später jeden Datensatz in einer Schleife verarbeite.
 
du kannst den befehl find mit dem parameter -exec aufrufen und somit für jedes einzelne gefundene ergebnis einen befehl mit diesem ausführen. Beispiel:

find /afs -type d -exec fs setacl '{}' system:anyuser rl \;

fügt für jedes verzeichnis unter /afs den anyuser in die acl hinzu
Vielleicht hilft dir das
 
poste doch einfach mal dein script...dann lässt sich konkreter helfen
 
Gar keine schlechte Idee, mit der Idee von stronzo komme ich nämlich nicht wirklich weiter. Vielleicht bin ich auch einfach nur zu doof?!

Code:
#!/bin/bash
#
# Sucht alle Ordner die min. 60 Tage alt sind, zippt diese und loescht die Quellen
#
###### Deklaration der Variablen ######
declare -r source=/var/lib/
declare -r destination=/root/
declare -a find_path
declare -a find_dirs
#######################################

find_path=`find $source -maxdepth 1 -mindepth 1 -type d -mtime +1`

for i in ${find_path[@]}
do
        echo $find_path[$i]
        cut -c 10- $find_path[$i] > $find_dirs[$i]
        tar -czf $find_dirs[$i].tar.gz $source$find_dirs[$i]
        mv $find_dirs[$i].tar.gz $destination
done

Mein Problem liegt nun in Zeile 12. Jedes Ergebnis der find Abfrage möchte in ein Feld des Arrays find_path schreiben. I.wie muss ich da noch mitgeben in welches Feld des Arrays geschrieben werden soll, aber ich habe keine Ahnung wie ich das anstellen soll. :-/
 
Zuletzt bearbeitet:
Deine for-Schleife ist komisch.

So mache ich es immer:

Code:
for i in $find; do
echo $i // hier steht dann eine Zeile aus dem Array.
done;

'cuda
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh