Find Einzeiler für Filter Basename Dateien
Hallo,
es wäre große Klasse, wenn mir geholfen wird.
Ich versuche schon seit ein paar Wochen mein Problem mit find zu lösen, aber vielleicht ist es so gar nicht möglich.
Ich hoffe, ich bekomme dazu einen Tipp oder sogar eine Lösung.
Mein Problem.
Ich habe in einem Verzeichnis sehr viele Dateien und Ordner. Im Moment ca. 140000.
Es gibt immer ein 4er Paket. 3 Dateien und einen Ordner, die den gleichen Basisnamen haben.
Nur der zugehörige Ordnername hat nicht die ersten 3 Zeichen, die die Dateinamen haben.
Z.B.
1. Datei: MKL2025051700005.dat
2. Datei: MKL2025051700005.opp
3. Datei: MKL2025051700005.int
Ordnername: 2025051700005
Diese 4er Pakete möchte ich in ein anderes Verzeichnis verschieben, aber nur wenn es vollständig ist.
Kann ich dabei bitte Hilfe bekommen oder geht das gar nicht mit find?
Ich bin leider noch immer Anfänger. Wenn meine Beschreibung ungenau ist, bitte ich um Nachsicht.
Ich Danke schon mal allen die helfen möchten.
es wäre große Klasse, wenn mir geholfen wird.
Ich versuche schon seit ein paar Wochen mein Problem mit find zu lösen, aber vielleicht ist es so gar nicht möglich.
Ich hoffe, ich bekomme dazu einen Tipp oder sogar eine Lösung.
Mein Problem.
Ich habe in einem Verzeichnis sehr viele Dateien und Ordner. Im Moment ca. 140000.
Es gibt immer ein 4er Paket. 3 Dateien und einen Ordner, die den gleichen Basisnamen haben.
Nur der zugehörige Ordnername hat nicht die ersten 3 Zeichen, die die Dateinamen haben.
Z.B.
1. Datei: MKL2025051700005.dat
2. Datei: MKL2025051700005.opp
3. Datei: MKL2025051700005.int
Ordnername: 2025051700005
Diese 4er Pakete möchte ich in ein anderes Verzeichnis verschieben, aber nur wenn es vollständig ist.
Kann ich dabei bitte Hilfe bekommen oder geht das gar nicht mit find?
Ich bin leider noch immer Anfänger. Wenn meine Beschreibung ungenau ist, bitte ich um Nachsicht.
Ich Danke schon mal allen die helfen möchten.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 674060
Url: https://administrator.de/forum/find-dateien-verschieben-paket-674060.html
Ausgedruckt am: 29.07.2025 um 19:07 Uhr
8 Kommentare
Neuester Kommentar
#!/bin/bash
# source folder
source="/path/to/source"
# destination folder
dest="/path/to/destination"
baseuniq=$(find $source -type f -name "*.dat" -exec basename {} .dat \; | uniq)
for base in $baseuniq ;do
files=$(find $source -type f -name "${base}.dat" -o -name "${base}.opp" -o -name "${base}.int")
folder=$(find $source -type d -name "${base:3}")
if [[ $(echo "$files" | wc -l) -eq 3 && -d "$folder" ]] ;then
mkdir $dest/$base >/dev/null 2>&1
cp $files $dest/$base/
cp -r $folder $dest/$base/
fi
done
Liegt dann wohl an deinem verwendeten System statt && lässt sich auch -a als Boolean UND-Operator verwenden wenn in deiner Shell nur single brackets nutzen kanns, gibt ja viele Wege nach Rom:
tldp.org/LDP/abs/html/comparison-ops.html
Kommt eben drauf an welche Shell und OS du gerade nutzt. Klappt hier auf Debian, ArchLinux, etc. in der Bash Shell ohne Probleme.
Also entweder beschnittenes System/Shell oder Copy n Paste Fehler, also noch mal penibel vergleichen und Shell checken.
Wenn bei dir nur single Brackets in deiner verwendeten Shell gehen dann geht's auch so
Wenn's das dann war bitte Haken dran. Danke.
tldp.org/LDP/abs/html/comparison-ops.html
Kommt eben drauf an welche Shell und OS du gerade nutzt. Klappt hier auf Debian, ArchLinux, etc. in der Bash Shell ohne Probleme.
Also entweder beschnittenes System/Shell oder Copy n Paste Fehler, also noch mal penibel vergleichen und Shell checken.
Wenn bei dir nur single Brackets in deiner verwendeten Shell gehen dann geht's auch so
if [ $(echo "$files" | wc -l) -eq 3 -a -d "$folder" ] ;then
Wenn's das dann war bitte Haken dran. Danke.