Archiv verlassen und diese Seite im Standarddesign anzeigen : directories vergleichen
hiho
ich mache gerade in einer firma ferienjob und mir wurde eine ****** aufgabe zugeteilt:
ich soll 2 directories vergleichen, ob da darunter liegende ordner evtl doppelt sind.
das prob ist, dass die ordner teilweise eine leerstelle haben und manchmal gleich heißen.
/dic1/000815///////
und
/dic2/00 0815/////
haben z.b. den selben inhalt, was man aber am directory namen sehen kann.
wenn ein directoy in beiden vorhanden ist, soll sie in dic1 gelöscht werden.
so unds dafür suche ich ein prog/script oder befehl oder sonst was.
ich will nämlich nicht alles per hand durchmachen.. ;(
achja, ist eine SUN machine.
ich hoffe es hat einer nen tip!
danke schonmal!
Beherscht du C oder Perl oder sonst eine Sprache?
Denn dann könntest du dir so ein kleines Programm schreiben, das genau dies überprüft. Dürfte (mit ein wenig Nachdenken) nicht schwer sein.
mfG
C geht einigermaßen, hab aber leider keine ahnung, wie ich da auf directoriey zugreifen könnte........ :(
mit Unixbefehlen wie opendir, readdir und closedir. Hier müsstest du dich, in den Manpages durchwühlen um näheres zu erfahren....
Jedoch würd ich noch warten, bevor ich mit dem programmieren beginnen würde, denn vielleicht gibt es ja schon so etwas, was du brauchst.
//edit: Da dies zwar kein Programmierforum, will ich dir ein Bsp-Prog geben, dass alle Dateien im aktuellen Verzeichnis ausliest!
#include <sys/types.h>
#include <dirent.h> /* für die Struktur "dirent" */
int main(int argc, char **argv)
{
DIR *dirHandle;
struct dirent * dirEntry;
dirHandle = opendir("."); /* oeffne aktuelles Verzeichnis */
if (dirHandle) { /* gibt es überhaupt dieses Verzeichnis? */
while (0 != (dirEntry = readdir(dirHandle))) { /* gehe gesamtes Verzeichnis durch */
puts(dirEntry->d_name); /* Dateiname herausschreiben */
}
closedir(dirHandle);
}
}
cool, ich danke dir!
werde ich morgen früh gleich mal testen.
wenn du Hilfe beim Programmieren brauchst, dann melde dich.
Wenn ich Zeit habe, dann helf ich dir ein wenig...
mfG
Berufspenner
31.07.03, 15:19
Hi@all
Wenn es um die Programmierung geht: www.mrunix.de unser Schwesterforum.
Cu
André
Der Gestreifte
31.07.03, 15:51
Wieso programmieren?
Vorausgesetzt, es bifindet sich in jedem Verzeichniss jeweils nur ein solches Unterverzeichnis (also "verzeichnis a" oder "verzeichnisa") und die Leerstellen haben keinen Sinn:
In beiden Verzechnissen aus den Unterverzeichnissen die Leerzeichen extrahieren:
for i in *; do mv "$i" $(echo "$i" | tr -d " ")
Anschliessend mit
cd dic2; for DIR in * ; do if [ -d ../dic1/"${DIR##/*}" ]; then rm -rf ../dic1/"$DIR"; fi; done
die Verzeichnisse aus dic1 löschen, die es auch in dic2 gibt.
Aber erstmal mit "rm -i" üben, ist ungetestet.
hiho
danke erstmal für eure ideen.. :)
werde das morgen alles mal testen
werde aber rm erstmal durch ls ersetzen... ;)
müsste ja gnauso gehen...
thx
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.