Автор Тема: калпав баш скрипт  (Прочетена 1215 пъти)

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
калпав баш скрипт
« -: 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

Къде бъркам?
« Последна редакция: Apr 19, 2010, 00:08 от VladSun »
Активен

Some Things Just Are The Way They Are

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: калпав баш скрипт
« Отговор #1 -: Apr 18, 2010, 23:47 »
DIR2="/home/user/test/*"
FILE2="/home/user/test/*"
Активен

sdr

  • Напреднали
  • *****
  • Публикации: 655
    • Профил
Re: калпав баш скрипт
« Отговор #2 -: Apr 19, 2010, 10:41 »
find $DIR2 -mtime +$DAYS -type d -exec rm -rf {} \;

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

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

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
Re: калпав баш скрипт
« Отговор #3 -: 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 .
Активен

Some Things Just Are The Way They Are

morbid_viper

  • Напреднали
  • *****
  • Публикации: 266
  • Distribution: (Open)SUSE since v5.3 (1999)
  • Window Manager: KDE ориентиран
    • Профил
Re: калпав баш скрипт
« Отговор #4 -: Apr 19, 2010, 15:26 »
провери дали имаш интервали или други не-буквеноцифрени знаци в имената на файловете. за всеки случай пробвай с „…-exec rm -fr "{}" \;“
Активен

-------------------------------------------------
Blessed are we to taste this life of sin!
-------------------------------------------------
Registered Linux user #251276

mrowcp

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

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

Some Things Just Are The Way They Are

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: калпав баш скрипт
« Отговор #6 -: Apr 20, 2010, 17:26 »
След като test не е променяна от 30 дни тя също влиза в резултата от търсенето. Елиминираш само нея:
Код:
find $DIR -mtime +$DAYS ! -name $DIR -exec rm -rf {} \;

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

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.