Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: mrowcp в Apr 18, 2010, 21:36



Титла: калпав баш скрипт
Публикувано от: mrowcp в Apr 18, 2010, 21:36
Не съм много сигурен дали темата е за този раздел, извинявам се ако не е.Иначе става дума за следното:

cat cleanup

Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. ####################
  4. DIR="/home/user/test/2010-UPL"
  5. FILE="/home/user/test/2010-UPL"
  6.  
  7. DIR2="/home/user/test"
  8. FILE2="/home/user/test"
  9.  
  10. DAYS="30"
  11. ####################
  12.  
  13. find $DIR -mtime +$DAYS -type d -exec rm -rf {} \;
  14. find $FILE -mtime +$DAYS -type f -exec rm {} \;
  15.  
  16. find $DIR2 -mtime +$DAYS -type d -exec rm -rf {} \;
  17. find $FILE2 -mtime +$DAYS -type f -exec rm {} \;
  18.  
  19. #eof

Проблема е че затри даже и папка test което не виждам как може да е вярно  ??? ??? ??? Имах важно инфо там.
Тествах преди това скрипта върху друга ди ри си работи нормално, както и като заместя променливите.Проблема идва само когато стартирам:

/home/user/cleanup

И ми изписа:

/home/user/test: No such file or directory
/home/user/test: No such file or directory

Къде бъркам?


Титла: Re: калпав баш скрипт
Публикувано от: ntrance в Apr 18, 2010, 23:47
DIR2="/home/user/test/*"
FILE2="/home/user/test/*"


Титла: Re: калпав баш скрипт
Публикувано от: sdr в Apr 19, 2010, 10:41
find $DIR2 -mtime +$DAYS -type d -exec rm -rf {} \;

това по същество ще ти изтрие  папката и всичките и файлове ако модификейшъм тайма и е по-старт от 30 дни май .. това е излишно при положение че си изтъркал старите файлове в нея. Друг вапрос е ако искаш да махнеш празните директории тогава -рф е излишно просто го направи с rmdir  --ignore-fail-on-non-empty и толкоз - папката като се изпразни ще може и да се изтрие :) аз лично винаги се разтрепервам като трябва да напиша rm -rf а ти чак в скрипт си го сложил и то след find ... смелчага си!

п.с. и според мен е по-добре първо да търкаш файловете и после да видиш дали трябва да изкъртиш и директорията


Титла: Re: калпав баш скрипт
Публикувано от: mrowcp в Apr 19, 2010, 14:49
DIR2="/home/user/test/*"
FILE2="/home/user/test/*"

Няма нужда от *, защото то си търси от /home/user/test назад

find $DIR2 -mtime +$DAYS -type d -exec rm -rf {} \;

това по същество ще ти изтрие  папката и всичките и файлове ако модификейшъм тайма и е по-старт от 30 дни май .. това е излишно при положение че си изтъркал старите файлове в нея. Друг вапрос е ако искаш да махнеш празните директории тогава -рф е излишно просто го направи с rmdir  --ignore-fail-on-non-empty и толкоз - папката като се изпразни ще може и да се изтрие :) аз лично винаги се разтрепервам като трябва да напиша rm -rf а ти чак в скрипт си го сложил и то след find ... смелчага си!

п.с. и според мен е по-добре първо да търкаш файловете и после да видиш дали трябва да изкъртиш и директорията

Целта е да се трие всичко по старо от 30 дена.Както директории, така и файлове.
Проблема е, че когато изпълня:

find /home/user/test -mtime +3 -exec rm -rf {} \;

всичко си работи нормално ( сега махнах -type ,защото няма смисъл дефакто от него ), но се чупи при стартирането на скрипта и трие 2010-UPL и test .


Титла: Re: калпав баш скрипт
Публикувано от: morbid_viper в Apr 19, 2010, 15:26
провери дали имаш интервали или други не-буквеноцифрени знаци в имената на файловете. за всеки случай пробвай с „…-exec rm -fr "{}" \;“


Титла: Re: калпав баш скрипт
Публикувано от: mrowcp в Apr 19, 2010, 15:45
провери дали имаш интервали или други не-буквеноцифрени знаци в имената на файловете. за всеки случай пробвай с „…-exec rm -fr "{}" \;“

Ще пробвам.Иначе фаиловете са от вида IME-neshto.txt neshto.log.txt
Директорийте са: /home/user/test/2000/100/1/


Титла: Re: калпав баш скрипт
Публикувано от: dejuren в Apr 20, 2010, 17:26
След като test не е променяна от 30 дни тя също влиза в резултата от търсенето. Елиминираш само нея:
Код:
find $DIR -mtime +$DAYS ! -name $DIR -exec rm -rf {} \;

Виж също дали параметър -atime може да ти свърши по-добра работа.