Kommando mv reagiert nicht wie erwartet



  • Salutos zusammen,

    bei der Anwendung des mv Kommandos erhalte ich Fehlermeldungen, dass ein Aufruf von 'stat' für eine Vielzahl von generierten Dateien nicht möglich ist. Trotz des Fehlers werden die Dateien stets ordnungsgemäß verschoben.

    Das Kommando an sich allein funktioniert ohne Probleme. Wenn ich dies jedoch im Rahmen einer Make Datei verwende, erhalte ich folgende Fehlermeldung(en):

    mv: der Aufruf von stat für 'lctype.o' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
    make: *** [Makefile:5: clean] Fehler 1
    

    Folgendes Make Target:

    clean :
    	mkdir ../objects && mv -t ../objects lopcodes.o ldo.o lundump.o lvm.o lapi.o llex.o lstate.o llimits.o lgc.o lzio.o loslib.o lua.o luac.o lfunc.o lstring.o lbaselib.o ldebug.o lstate.o ltablib.o lmem.o liolib.o ldump.o ltable.o lauxlib.o lualib.o ldebug.o ldblib.o ltm.o lfunc.o lvm.o lobject.o lcode.o lutf8lib.o lcode.o ltable.o ltm.o lctype.o lundump.o lopcodes.o loadlib.o lmathlib.o llex.o lparser.o lbitlib.o ldo.o luaconf.o lgc.o lapi.o lmem.o lstring.o lcorolib.o lprefix.o lauxlib.o linit.o lobject.o lstrlib.o lparser.o lzio.o lctype.o
    

    Ich habe alle benötigten Rechte, ich generiere die Object Dateien vorher mit GCC und die Dateien werden ordentlich in das objects Verzeichnis verschoben.

    Ich habe ein paar Suchen bereits durchgesucht, finde aber nicht meinen speziellen Fall.

    https://serverfault.com/questions/453227/error-when-using-mv
    https://stackoverflow.com/questions/24284479/mv-cannot-stat-error-when-using-find-to-move-files-via-xargs
    https://stackoverflow.com/questions/11942422/moving-large-number-of-files

    Danke euch



  • Warum verschiebt clean die Dateien, statt sie zu löschen?

    Warum werden die Dateien im Makefile explizit aufgelistet? Es ist zu erwarten, dass da nicht immer alle da sind. Zumindest sollte -f verwendet werden.

    Welches Betriebssystem?



  • Vielleicht liegt es auch einfach daran, dass lctype.o zwei mal in der Liste steht.



  • @manni66
    Ich habe vorher immer entweder gcc direkt aufgerufen oder eine IDE verwendet (Code::Blocks). Ich wollte mal ein wenig davon wegkommen und mich mit Make auseinander setzen.

    Auf den ersten Dokumentationsseiten waren ein paar Beispiele und das Ziel "Clean" ist hierbei einfach etwas, das ich nicht vorher umbenannt habe. Ich wollte vor dem abschließenden linken alle Objektdateien in einem Verzeichnis sammeln da speziell Bibliotheken wie Lua sich nicht dauerhaft verändern (ich weiß, dass man auch einfach gegen die Bibliothek linken kann, aber das war jetzt einfach der Weg den ich probiert habe).

    Betriebssystem: Manjaro (Arch Derivat)

    Ich habe das Problem inzwischen auch einfach mit Wildcards in der Makefile gelöst.

    Danke dir auf jeden Fall für den Hinweis zu den doppelten Einträgen. Ich habe die Dateien per Skript sammeln lassen und habe da anscheinend etwas verbockt 😅