Bashskript Problem?

3 Antworten

Jeder darf es so schmerzhaft machen wie er will.

Möglichkeiten:

BASEDIR=somedir/ #
for file in $basedir*; do
   some stuff
done

Natürlich darfst Du auch über den Output von ls iterieren:

for item in `ls ...` # Neben backticks gibt es weitere Möglichkeiten

Oder Du nutzt gleich find und machst sowas wie:

find .... -exec md5 '{}' \;

und iterierst über den Output, oder Du nutzt find, iterierst über dessen Output udn rufst dann wieder md5 auf.

Du kannst dabei auch auf read zurückgreifen und solltest Dir dann auch die Bedeutung von IFS anschauen.

Zu guter letzt würde ich Dir die Advanced Bash Scripting Guide ans Herz legen, die gibt es ja nicht umsonst.

P.S.: Noch als Gedanke, Du wirst Dir vermutlich assoziative Arrays anschauen wollen, um so die Dateinamen inklusive Hashwerten aufzuheben.

FILES=($(ls -p | grep -v / | head -n 2))

# Überprüfen, ob genau zwei Dateien vorhanden sind
if [ ${#FILES[@]} -ne 2 ]; then
    echo "Es sind nicht genau zwei Dateien im Ordner $BASE_DIRECTORY."
    exit 1
fi


FILE="$BASE_DIRECTORY/${FILES[0]}" # Pfad zur ersten Datei
FILE2="$BASE_DIRECTORY/${FILES[1]}" # Pfad zur zweiten Datei

Problem ist, das das ganze wenn du es so mit den beiden Variablen FILE und FILE2 machst, nur bei eben genau 2 Dateien funktioniert. Ich musste es jetzt aber so machen weil du ja später immer die beiden Variablen zum vergleichen nutzt.

Nur als zusätzlichen Tipp, unter Linux könntest du dir mal inotifywait anschauen, ob es das unter Windows/Mac gibt weiss ich nicht.

Woher ich das weiß:Studium / Ausbildung – Informatiker

shibuyo 
Beitragsersteller
 20.06.2024, 10:13

Ich kenne das. Gibt leider nur unter Linux.

0