Nejprve bych dočasně uložil seznam souborů a použil smyčku.
find . -mtime -90 -ls >/tmp/copy.todo.txt
Seznam, pokud není příliš velký, si můžete přečíst pomocí
for f in `cat /tmp/copy.todo.txt`;
do echo $f;
done
Poznámka:uvozovky kolem cat... jsou zpětné zaškrtnutí, často v levém horním rohu klávesnice.
Poté můžete příkaz echo nahradit příkazem pro kopírování:
for f in `cat /tmp/copy.todo.txt`;
do cp $f /some/directory/
done
Přesné datum a čas lze vybrat i jinak, než se vrátit o určitý počet dní:
cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
Výše uvedené zkopíruje všechny soubory v adresáři, které byly vytvořeny po 18. září 2016 20:05:00, do FOLDER
(tři měsíce před dneškem :)
Buďte opatrní se symbolem pro příkaz find. Není tento:'
Je to toto, zpětné zaškrtnutí:`
Výběr data je s tímto:'
Pokud máte v názvech soubory s mezerami, novými řádky, tabulátory nebo zástupnými znaky, můžete použít kterékoli z řešení od Stéphana Chazelase. První je pro GNU a druhý je pro GNU nebo některá BSD:
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 {} +
Použijte tento příkaz:
for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
Použijte -exec
možnost pro find
:
find . -mtime -90 -exec cp {} targetdir \;
-exec
zkopíruje každý výsledek vrácený find
do zadaného adresáře (targetdir
ve výše uvedeném příkladu).