Ich habe versucht, mehr über Linux zu lernen und habe mich heute Morgen auf den awk-Befehl konzentriert. Der Befehl, den ich versucht habe zu arbeiten, ist unten.Linux CP mit AWK-Ausgabe
ls -lRt lpftp.* | awk '{print $7, $9}' | mkdir -p $(awk '{print $1}') | ls -lRt lpftp.* | cp $(awk '{print $9, $7}')
Im Grunde bin ich versucht, jede Datei in einem Verzeichnis in ein Unterverzeichnis auf, das Dateien zuletzt geändert Tag basierend zu bewegen. Der Befehl druckt zuerst nur die gewünschten Dateien und erstellt mit mkdir einen Ordner, der auf dem Tag des Monats basiert, an dem er zuletzt geändert wurde. Was ich danach tun will, ist jede Datei in sein zugehörigen Verzeichnis verschieben, aber als der Befehl jetzt ist es jede Datei in die 01 Ordner verschoben und druckt den folgenden Text
cp: 0653-436 12 is a directory.
Specify -r or -R to copy.
einmal für jedes Verzeichnis.
weiß jemand, wie ich dieses Problem beheben kann? oder wenn es einen besseren Weg gibt, darüber zu gehen?
Warum leiten Sie die Ausgabe von 'mkdir' an' ls'? 'mkdir' erzeugt keine Ausgabe (außer Fehlermeldungen) und' ls' verwendet seine Eingabe nicht. – Barmar
Der Grund für die zweite LS-Anweisung war, dass ich nach dem mkdir keinen Zugriff auf den Dateinamen aus dem ursprünglichen LS bekommen konnte, also habe ich ihn erneut ausgeführt, um diese Liste neu zu erstellen. Gibt es eine bessere Methode? – Cronisej
@Cronisej Ja, sehe meine Antwort. – eddiem