Skocz do zawartości

Bash: Operacje Na Plikach I Katalogach


morg

Rekomendowane odpowiedzi

Witam

 

Nie mogę nigdzie znaleść jak obciąć ostatni człon katalogu $PWD | cut -d'\/' -f1 lub f2 odnoszą się do pierwszego członu.

np: /dluga/sciezka/do/katalogu po operacji powinna wygladac: /dluga/sciezka/do.

 

I drugie pytanie:

 

Mam serwer backupowy z którego chce przerzucić część plików na drugi serwer. Problem w tym, że

na starym serwerze powinny zawsze znajdować się pliki z ostatnich 14 dni. Skrypt będzie wykonywany 1 - 2 razy w miesiącu. W jaki sposób przygotować listę plików, która nie będzie zawierała plików z ostatnich 2 tygodni.

 

 

Do kasowania używam takiej funkcji która działa na serwerze z mała ilością RAM, stąd konieczność wrzucenia wszystkiego do pliku i przeszukiwania go.

 find /oradata/bank/ |grep -v CMemi10a |grep -v _dmp  >ls-la
               stare=`cat ls-la |grep "\/old\/"`
               for plik in $stare; do
               rm -f $plik
               done

 

Do wysłania na serwer posłużę się ftp, który będzie zaczytywał pliki do wysłania z wcześniej przygotowanego pliku, a w następny przebieg skasuje zarchiwizowane pliki.

 

Czy taki sposób jest sensowny? Nie wiem jak dodać warunek który prerwie działanie skryptu w momencie gdy pojawi sie spacja w nazwie katalogu i zakończy działanie albo się zawiesi.

 

Dziekuję za pomoc.

 

M.

Odnośnik do komentarza
Udostępnij na innych stronach

@1

dopasuj sobie:

 #!/bin/sh
echo $PWD
echo ${PWD##*/}
echo ${PWD#/}
echo ${PWD%%/*}
echo ${PWD%/*}

#blabla - obetnij z początku pierwszy pasujący "blabla" parametru

##blabla - obetnij z początku najdłuższy pasujący do "blabla"

% i %% - podobnie, tylko że z końca parametru obcina

a dopasowanie jak zwykle * ? itp.

 

[EDIT]

heh, nie wiem co Ty kombinujesz, ale ta końcówka zapisu jest co najmniej dziwna

 

|grep -v _dmp  >ls-la
               stare=`cat ls-la |grep "\/old\/"`
               for plik in $stare; do
               rm -f $plik
               done

może tak:

|grep -v _dmp |grep "\/old\/" | xargs -i rm -f '{}'

możliwe, że coś z xargs źle zapisałem, bo często się na tym mylę :) ale xargs właśnie do tego służy. Zresztą przy tak nie bezpiecznej operacji jak usuwanie zawsze możesz końcówkę zapisać jako echo:

| xargs -i echo rm -f '{}'

i dopiero jak na ekranie jest coś sensownego to dopisać

| xargs -i echo rm -f '{}' | sh

 

co do czasu 14 dni to "find is a beautiful tool"

 

jeśli zaś chodzi o spacje w katalogu do kilka nawiasów i cudzysłowów właściwie użytych zawsze się sprawdza.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 months later...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...