Ich habe eine große Anzahl von Bildern von einer alten Festplatte, die ich zu organisieren versuche. Wenn ich ausgeführt werde ls -l
, stelle ich fest, dass alle diese Dateien ein Erstellungsdatum von 2012 oder früher haben. Im Idealfall möchte ich diese auf die zweite Festplatte meines Computers verschieben, die nicht automatisch gemountet wird. Am besten könnte ich dies alles als Stapel mit einigen miteinander verknüpften Befehlen tun. Bisher habe ich das, ls -l | grep -i 2012
was nur die Dateien mit 2012 in dem von angegebenen Datum ausspuckt ls -l
. Der Trick wäre nun cp
, alle diese Dateien in das neue Verzeichnis zu verschieben. Ich bin mir nicht sicher, wohin ich als nächstes gehen soll, da jede Datei kopiert werden müsste. Was wäre mein nächster Befehlssatz?
quelle
Wenn Sie neuere Dateien auf der alten Festplatte haben, die Sie ignorieren möchten, würde ich so vorgehen
Hier sind Beispielbefehle dafür, bei denen davon ausgegangen wird, dass Sie eine Verzeichnishierarchie von der alten Festplatte in der neuen beibehalten möchten (
cpio
ist ein Kopierbefehl, ähnlichtar
oderpax
):quelle
Ich denke, vielleicht ist dieses Problem das gleiche wie Ihres. Sie können dies auch überprüfen: Erstellen Sie Unterverzeichnisse und organisieren Sie Dateien nach Datum
Ich schreibe dieses neue Skript basierend auf der ersten Antwort dieses Problems:
Schreiben Sie dieses Skript in eine Datei mit dem Namen
copy.sh
in Ihrem alten Verzeichnis.Ersetzen Sie den
/your/new/directory
durch den Pfad Ihres neuen VerzeichnissesMachen Sie diese Datei ausführbar mit
chmod +x copy.sh
Führen Sie diese Datei dann mit aus
./copy.sh
quelle
2015
Verzeichnis verschiebt.Sie sollten wahrscheinlich ein Batch-Tool für Batch-Vorgänge verwenden. Dies bedeutet normalerweise, dass alle Datensätze in einem einzigen Stream gelesen / geschrieben werden, anstatt beispielsweise
cp
für jede kopierte Datei einen eigenen Prozess aufzurufen .Hier ist bereits eine
cpio
Antwort geschrieben, die angesichts der bereits angebotenen Optionen wahrscheinlich das ist, was ich wählen würde. Dascpio
Format wurde jedochpax
seit seiner Blütezeit verbessert und in das standardisierte Archivformat integriert. Gleiches gilt fürtar
.Ein strikter POSIX-
pax
bietet wahrscheinlich keine Optionen zum direkten Filtern von Archivmitgliedern basierend auf Dateimodifikationszeiten - obwohl der Standard den Formatmodifikator für den Listenmodus spezifiziert%T
. Die am häufigsten verfügbarepax
Implementierung, die mir bekannt ist - die von mirabilos verwaltete BSD-Version - erweitert dies jedoch zu einem direkt zugänglichen CLI-Switch.Zum Beispiel nur alle Dateien im Baum auf verwurzelt zu kopieren
./
dem letzten Änderung vor ,ccyymmddHHMM
um/target/dir
Sie tun können:Um zu vermeiden, dass Sie in untergeordnete Verzeichnisse zurückkehren, können Sie stattdessen Folgendes tun:
Weitere
man
Informationen finden Sie auf der Seite.quelle
pax
, abertar
undcpio
mich trotzdem gut ausstehen. +1pax
Archivformat gibt (das eine Erweiterung des ustar- Formats darstellt) . Da alle drei Archivtypen in erster Linie nur unterschiedliche Methoden zum Codieren der Metadaten für viele Dateien neben den tatsächlichen Daten dieser Dateien in einem einzigen Stream darstellen, ist dies keine allzu große Anstrengung. Ich habe einmal geschrieben - das waren nur ein paar Zeilen Shell-Skript für - meistens - Blockentwickler im laufenden Betrieb, basierend auf der POSIX-Spezifikation.pax
shitar
dd
tar
cpio -H ustar
...