/ / изтриване на 10 дневна папка в linux - linux, bash, shell

изтриване на 10 дневна папка в linux - linux, bash, shell

#!/bin/bash
now=$(date +"%d-%m-%Y")
year=$(date +"%Y")
echo $year
find  /var/backup/backup-scripts -name "*$year*" -ctime +10 -exec rm {} ;
~
~

Този скрипт работи без грешки, но не премахва 10-дневна папка

Моля, консултирайте се

Благодаря предварително

Отговори:

1 за отговор № 1

Вие сте единствен цитирайки променлива, тя не може да бъде разширена от обвивката. Опитвам

find  /var/backup/backup-scripts -name "*$year*" -ctime +10 -exec rm {} ;

IHTH


1 за отговор № 2

Отговорът на @shellter е по-директно картографиране на вашата методология, но ето как ще кодирам това:

find  /var/backup/backup-scripts -name "*$(date +%Y)*" -mtime +10 -type f 
-print0 |xargs -0 rm -v

Някои разлики:

  • Той е еднолинеен (въпреки че ако искате да работите с cron, направете скрипт)
  • -mtime ("модифициран") замества -ctime ("променена"), защото понякога достъпът е промяна
  • Ограничих резултатите до файловете
  • Преминах изхода на xargs (по безопасен начин за разпределени имена на файлове), за да разпредели задачата

xargs е полезно, защото няма да бъде претоварено от товамного файлове (можете да изпратите толкова много аргументи само на програма за команден ред). Той също така работи малко по-бързо, тъй като ще изпълнява множеството си примери паралелно. (Ако не се изпълняват няколко случая, няма да има скорост, но в такъв случай вероятно няма да отнеме много време.

Една от основните причини да използвате тръби тук е, че можете да редактирате изхода още повече. Нека кажем, че искате да запазите всичко от януари:

find /var/backup/backup-scripts -name "*$(date +%Y)*" -mtime +10 -type f 
|egrep -v "$(date +%Y)-?01" |xargs -d "n" rm -v

egrep -v ще показват само линии, които правят не съвпадат с дадения регекс, така че няма да бъдат премахнати.

Това използва n като разграничител, а не като (нула), което ще прескача файлове с линия(не правете това!), но в противен случай изключва хитове като file20150101.txt и file2015-01-01.txt (обърнете внимание на въпроса в моя разширен posix regex; допълнително обяснение при regex101)