Hallo,
ich bin ein ziemlicher Linux-Anfänger und habe folgendes Problem,
Ich möchte nämlich verschiedene Ordner anhand der darin befindlichen Dateien sortieren.
Die Verzeichnisstruktur sieht ungefähr so aus:
~/quelle/ordner1/file1
------------/ordner2/file2
------------/ordner3/file3
-----------
mit dem Script möchte ich dann nach einem bestimmten fileX mit einem bestimmten Muster (bsp. nach Größe und/oder Dateiendung) suchen und anschließend mit dem aktuellen Ordner verschieben. Am Ende würde dann so aussehen:
~/ziel/sort1/ordner1/file1
----------------/ordner2/file2
---------------
------- /sort2/ordner3/file3
Danke vorab
Ordner Sortieren
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: Ordner Sortieren
Code: Alles auswählen
find ~/quelle -name '*.mp3' -size 10M -type f -exec dosomething.sh {} ~/zielordner \;
Code: Alles auswählen
#!/bin/bash
if [ $# -eq 2 ];
then
SRC=$1
DST=$2
# falls du mal den Dateinamen brauchst
NAME=$(basename $SRC)
mv $SRC $DST
else
echo "Synposis: dosomething.sh <srcfile> <dst>"
fi
Re: Ordner Sortieren
Vielen Dank für die schnelle Antwort.
Hier wird nur die gesuchte Datei verschoben, richtig? aber wie kann ich dann den Mutter-Ordner + die gesuchte Datei verschieben?
Danke
Hier wird nur die gesuchte Datei verschoben, richtig? aber wie kann ich dann den Mutter-Ordner + die gesuchte Datei verschieben?
Danke
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: Ordner Sortieren
Die Logik wirst du in die dosomething.sh packen muessen. Da du nur einzelne Dateien aus dem Quellordner nimmst und keine ganzen Ordner verschiebst wirst du die einzelnen Aktionen zerlegt muessen. Da bedeutet, dass dein Skript etwa folgendes tun wird:
Code: Alles auswählen
*Pseudocode*
SRC=$1
DST=$2
# Verzeichnisbaum und Dateiname voneinander trennen
DATEINAME=$(basename $SRC)
PFAD=nehme $SRC schneide Dateiname ab. Ergebnis: Pfad
# Den Pfad um die uninteressante Zeile saeubern. z.B. "~/quelle" weg schneiden. Uebrig bleibt "ordner1"
PFADSAUBER=$PFAD beschneiden
# Ordnerstruktur im Ziel erstellen.
mkdir -p $DST/$PFADSAUBER
# Datei von a nach b verschieben
mv $SRC $DST/$PFADSAUBER/$DATEINAME
Re: Ordner Sortieren
Hallo vielen dank nochmal für die Antwort und für die Erklärung
erst jetzt habe ich verstanden, daß man bei dieser Aufgabe den Pfad zur Datei vom dem eingentlichen Namen der Datei trennen "muss"!
Der Code funktioniert wunderbar und tut genau das was man von ihm erwartet.
Merci
erst jetzt habe ich verstanden, daß man bei dieser Aufgabe den Pfad zur Datei vom dem eingentlichen Namen der Datei trennen "muss"!
Der Code funktioniert wunderbar und tut genau das was man von ihm erwartet.
Merci
Code: Alles auswählen
SRC=$1
DST=$2
# Verzeichnisbaum und Dateiname voneinander trennen
DATEINAME=$(basename $SRC)
#schneide Dateiname ab. Ergebnis: Pfad
PFAD=$(dirname $SRC)
# Den Pfad um die uninteressante Zeile saeubern. z.B. ~/quelle weg schneiden. Uebrig bleibt ordner1
ORDNERNAME=$(basename $PFAD)
# Ordnerstruktur im Ziel erstellen.
mkdir -p $DST/$ORDNERNAME
# Datei von a nach b verschieben
mv $SRC $DST/$ORDNERNAME