#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 попробуйте версию скрипта ! На самом деле он использует имя файла вместо последней модификации 🙂