Ich würde zuerst die Liste der Dateien zwischenspeichern und eine Schleife verwenden.
find . -mtime -90 -ls >/tmp/copy.todo.txt
Sie können die Liste, wenn sie nicht zu groß ist, mit
lesenfor f in `cat /tmp/copy.todo.txt`;
do echo $f;
done
Hinweis:Die Anführungszeichen um cat... sind Backticks, oft in der oberen linken Ecke der Tastatur.
Sie können dann den Echo-Befehl durch einen Kopierbefehl ersetzen:
for f in `cat /tmp/copy.todo.txt`;
do cp $f /some/directory/
done
Man kann auch das genaue Datum und die Uhrzeit auswählen, außer auf eine bestimmte Anzahl von Tagen zurückzugehen:
cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
Das obige kopiert alle Dateien im Verzeichnis, die nach dem 18. September 2016 20:05:00 erstellt wurden, in den FOLDER
(drei Monate vor heute :)
Seien Sie vorsichtig mit dem Symbol für den Find-Befehl. Es ist nicht dieses hier:'
Es ist dies, ein Backtick:`
Die Datumsauswahl erfolgt hiermit:'
Wenn Sie Dateien mit Leerzeichen, Zeilenumbrüchen, Tabulatoren oder Platzhaltern in ihren Namen haben, können Sie eine der Lösungen von Stéphane Chazelas verwenden. Der erste ist für GNU und der zweite für GNU oder einige BSDs:
find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} +
find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "[email protected]" FOLDER' sh {} +
Verwenden Sie diesen Befehl:
for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
Verwenden Sie die -exec
Option für find
:
find . -mtime -90 -exec cp {} targetdir \;
-exec
würde jedes von find
zurückgegebene Ergebnis kopieren in das angegebene Verzeichnis (targetdir
im obigen Beispiel).