Linux: Копирование файлов, созданных в воскресенье

#linux #centos

Вопрос:

У меня есть скрипт, и я хочу копировать только файлы, которые создаются в воскресенье.

find /data/src/ -iname *.bak -mmin 3 -type f -exec cp {} -n -p -v /data/dest ;

Альтернативные файлы, созданные на 7. , 14. , 21. 28. го числа месяца.

Может быть, мы можем использовать имя файла для этой опции?

Имена файлов, такие как:

 db1_backup_2021_10_27_233001_1582165.bak db1_backup_2021_10_28_233001_1582165.bak db2_backup_2021_10_28_233001_1582165.bak ...  

Большое спасибо!

Ответ №1:

вы можете использовать команду найти :

 cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER  

Или :

 cp `find -type f -printf '%Tat%pn' | egrep "^(Sun)" | cut -f 2-`  

Имейте в виду, что это не дата создания, а дата последнего изменения

как скрипт с именем файла:

 ## declare an array variable put here the dates eclare -a arr=("07" "14" "21" "28")  ## now loop through the above array for i in "${arr[@]}" do  echo "copying back from "   $i  cp "db"*"_backup_"*"_"*"$i"*".bak" ./sundaysBackups/  # or do whatever with individual element of the array done  echo "ls in sundays" ls ./sundaysBackups  

вы можете попробовать сделать это с именем файла :

 cp "db"*"_backup_"*"_"*"_07_"*".bak"  cp "db"*"_backup_"*"_"*"_14_"*".bak" cp "db"*"_backup_"*"_"*"_21_"*".bak" cp "db"*"_backup_"*"_"*"_28_"*".bak"  

Комментарии:

1. Спасибо, это решение! cp -n -p -v find /data/src/ -iname *.bak -mtime 15 -type f -printf '%Tat%pn' | egrep "^(Sun)" | cut -f 2- /данные/dst/;

2. @sql_usr001 попробуйте версию скрипта ! На самом деле он использует имя файла вместо последней модификации 🙂