копировать файлы по дате

Как я могу копировать файлы в папку, основываясь на том, когда файл последний раз редактировался? Допустим, я хочу скопировать все мои файлы, которые я последний раз редактировал сегодня из c: , в мою папку bak . Как мне этого добиться?

Я знаю, что обычная команда копирования может быть выполнена следующим образом:

cp source destination

например.

cp *.c bak

Есть предложения?

3
задан 24 November 2015 в 16:28

2 ответа

Используя находку, файлы (и только файлы) измененный в прошлый день найдены:

find . -type f -mtime 1 

таким образом, можно скопировать их с

find . -type f -mtime 1  -exec cp {} bak/ \; 

Значение: найдите все объекты под текущим каталогом (.), типа "файл" (-type f), изменил по крайней мере 1 день с этого времени (-mtime 1, но это тонко, перейдите по ссылке для узнавания больше), и для каждого из них выполняют команду cp сопровождаемый под названием файл, которые соответствуют предыдущим условиям и литералом bak/ ---в exec пункт, заключительная точка с запятой (вышел для предотвращения оболочки, съев его) закрывает команду и дополнительно означает, что команда должна быть выполнена однажды для каждого соответствия.

Заметьте, что дерево каталогов будет сглажено в bak/ папка, поэтому возможно, с помощью формата архива была бы лучше.

Например, это - мой сценарий, который делает резервное копирование всех файлов в моих рабочих каталогах измененным сегодня и с двух дней в файлах tar, и затем переместите их в мой каталог Dropbox:

#! /bin/zsh 
#
cd $HOME
today="today-$(hostname)".tar
twodays="twodays-$(hostname)".tar
mydirs=(bin Documents Templates texmf Desktop) # list your top-level working dirs here  
rm -f $today $twodays
echo -n "Starting today and twodays backups... " 
find $mydirs -type f -mtime -1 -exec tar rf $today {} +
find $mydirs -type f -mtime -2 -exec tar rf $twodays {} +
echo "backups done:" 
ls -lh $today $twodays
echo "Moving to Dropbox" 
mv $today $twodays $HOME/Dropbox
sleep 2
dropbox status

этому нужно zsh потому что я ленив и не пытался адаптироваться к структуре массива bash, но конечно кто-то здесь может сделать это (подсказка, подсказка)...

5
ответ дан 25 November 2015 в 02:28
  • 1
    брат это работало! восстановление начальной загрузки восстановило целую проблему! большое спасибо! – Xristoforos Rittas 16 February 2017 в 05:11

Можно сначала определить, какой файл, который Вы изменили в последний раз в Вашей текущей папке с командой

ls -lt

Или, Вы хотите определить, какой файл, к которому Вы получаете доступ в последний раз с командой

ls -ltu

После этого, можно скопировать файл с cp команда. Для копирования нескольких файлов см. это .

0
ответ дан 25 November 2015 в 02:28
  • 1
    Персистентность isn' t требуемый. I' ll редактируют Ваш вопрос потому что иначе it' s корректный и полезный. –  16 February 2017 в 06:12

Другие вопросы по тегам:

Похожие вопросы: