Skript Komprimieren/Verbesserung

K

Kazuya

Hat sich mittlerweile erledigt :)
 
Zuletzt bearbeitet von einem Moderator:
also den check von 1 - 999 kannst du auf jeden Fall schonmal inkrementierend lösend: von 1 - 19 und 99 und 999 (seperat).


Ciao
 
Hi,

das ist ja ein Chaos... ;)

Was juan_ sicher meinte ist folgendes:
Code:
for i in {1..19} 99 999; do
   eval "cd ~/lohn/data_$i"
   rcheck &
done
Ich wuerde immer den absoluten und nicht den relativen Pfad angeben. Ausserdem wuerde ich ueberpruefen, ob das Programm rcheck nicht auch ein Verzeichnis als Parameter uebernehmen kann, dann spart man sich das ganze Verzeichniswechseln.

Ach ja, den Sinn der vielen Einrueckungen sehe ich auch nicht, das ist unlogisch, es sind ja keine Unterverzeichnisse.

Auch der Check ob das Programm noch laeuft, laesst sich sicher eleganter Regeln, als 2 Mal einfach lange zu warten.

Letztendlich wuerde ich auch bei den letzten paar find Befehlen den absoluten und nicht den relativen Pfad angeben. Du fuehrst da find naemlich nur in dem Verzeichnis aus, in das du als letztes gewechselt hast, was soweit ich das sehe ~/main/data_9 ist. Das ist wahrscheinlich nicht was du willst.

Edit: Ausserdem werden die letzten find Befehle wahrscheinlich auch nicht funktionieren, weil das abschliessende Semikolon nicht escaped wird. So sollte das aussehen:
Code:
find ~ -name AS0* -exec rm {} ';'
mfg,
bytepool
 
Zuletzt bearbeitet:
Was macht deine for Schleife wenn der Ordner nicht vorhanden ist? Evtl. existiert nicht für jede Zahl der entsprechende Ordner.

Also das Ding hier findet alle Ordner rekursiv von home (~) aus, das Problem ist nur jetzt in jeden Ordner reinzuwechseln und dort den Befehl zu starten.

Code:
find ~ -name data_[0-9]* -type d
Es werden dabei alle Ordner erkannt die unmittelbar nach dem _ eine Zahl haben, also alle anderen werden nicht erfasst. Was dabei jetzt nicht erfolgt ist die Abfrage ob nach der ersten Ziffer nicht doch noch ein Buchstabe auftaucht (evtl. ist das eh nicht der Fall).

Code:
server:~# find ~ -name data_[0-9]* -type d
/root/test/data_001
server:~#

Naja für das starten hab ich n Vorschlag und doch keine Ahnung..

Code:
server:~# find ~ -name data_[0-9]* -type d > filelist
server:~#
danach (Achtung pseudo Code):
Code:
with filelist do
for i = 1 to linecount - 1 do
cd line[i]
rcheck &
end
 
Zuletzt bearbeitet:
Hi,

Was macht deine for Schleife wenn der Ordner nicht vorhanden ist?
Es wird eine Fehlermeldung ausgegeben, was sonst?

Evtl. existiert nicht für jede Zahl der entsprechende Ordner.
Na, wenn die Fehlermeldung stoert, leitet man sie nach /dev/null, oder man checkt vorher ob das Verzeichnis existiert, wo ist das Problem? Zumal die Aufgabenstellung sowieso darauf schliessen laesst, dass die Ordner immer existieren. Das sieht stark nach einer Datenbank oder etwas aehnlichem mit einer festen Struktur aus.

[...] das Problem ist nur jetzt in jeden Ordner reinzuwechseln und dort den Befehl zu starten.
Noe, ist kein Problem, find bringt da das noetige Ruestzeug fuer mit. Siehe 'man find'. Das echte Problem ist, dass du damit uebers Ziel hinausschiesst, und ohne Ende Ordner mit einbeziehst, die eventuell ueberhaupt nicht ueberprueft werden sollen.

Zu der Idee, die Ausgabe von find erst in eine Datei umzuleiten, und dann die Datei weiter zu verarbeiten, spare ich mir mal jegliches Kommentar. ;)

mfg,
bytepool
 
sag mir mal wie das mit find gehen soll..

Code:
find . -name data_[0-9]* -type d -exec ??? \;
 
kombiniere doch einfach find mit einer for-Schleife...
 
Hi,
sag mir mal wie das mit find gehen soll..
zugegeben, ich dachte an -execdir, was etwas doof zu benutzen ist, wenn man eigentlich in das Verzeichnis wechseln will, das man sucht. Man landet dann prinzipiell ein Verzeichnis zu hoch. Aber auch das laesst sich auf verschiedene Arten umschiffen...

Doch das ist ja das bekannte Lied: Alles was mit Shell Skripten zu tun hat, kann man auf zig verschiedene Arten loesen.

mfg,
bytepool
 

Ähnliche Themen

Nvidia 545.23.06 Beta: Linux-Treiber mit HDMI-Verbesserungen und neuen Features [Notiz]

Steam Client: Verbesserungen für Linux und macOS sowie die Vulkan-API

KDE Plasma 5.24.4 LTS: Freier Linux-Desktop mit Verbesserungen erschienen (Update)

KDE Plasma 5.23.3: Verbesserungen für Wayland, Firefox, GTK und OpenVPN

KDE Frameworks 5.92: Freies Linux-Ökosystem mit Verbesserungen erschienen

Zurück
Oben