Nowe posty

Autor Wątek: usuwanie plikow oprócz kilku wybranych  (Przeczytany 7316 razy)

oliff

  • Gość
usuwanie plikow oprócz kilku wybranych
« dnia: 2012-01-11, 22:21:48 »
Potrzebuje pomocy ! Nie wiem jak napisać funkcję, albo cokolwiek co sprawi, ze usunę wszystkie pliki z katalogu oprócz np. dwóch wybranych. Czuję, że to banalne... ale już tyle nad tym siedzę a testując ciągle usuwam wszystko...

arctgx

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #1 dnia: 2012-01-12, 01:30:00 »
Można napisać pętlę w bashu używającą rm i szukającą w razie potrzeby podkatalogi, ale łatwiej, gdy poczytasz w manualu polecenia find na temat wyrażeń i operacji na nich (negacja, alternatywa lub koniunkcja) i zanegujesz testy na nazwy tych wybranych plików.

ZipoKing

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #2 dnia: 2012-01-12, 11:15:36 »
Jeżeli znasz nazwy tych plików, możesz spróbować takiego rozwiązania:
Kod: sh [Zaznacz]
find . | grep -v -E "plik1|plik2" | xargs rm

grep odfiltruje z listy te elementy które nie mają być usunięte, a xargs przekaże pozostałą listę plików do rm.

ktr

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #3 dnia: 2012-01-12, 18:48:35 »
po pierwsze bardzo ciekawe zapytanie ;) po drugie czemu wyrzuca takie coś ?
rm: nie można usunąć `.': Jest katalogiem

oliff

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #4 dnia: 2012-01-12, 19:11:03 »
Dzięki, u mnie wszystko zaczęło działać jak należy, do ktr: w zależności co chcesz usunąć musisz odpowiednio dobrać opcje: rm -f ( chyba usuwa wszystko bez pytania ).
Jeszcze raz dziękuję za pomoc, find załatwił sprawę.

ktr

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #5 dnia: 2012-01-12, 19:35:38 »
w przypadku -f/-rf wywala mi to samo.

oliff

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #6 dnia: 2012-01-12, 19:44:14 »
U mnie działa bez zarzutu rm bez żadnej dodatkowej opcji, może dlatego, że nie posiadam katalogów w miejscu z którego usuwam. Może to jakiś ukryty katalog i jakieś inne mechanizmy trzeba zastosować.

ktr

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #7 dnia: 2012-01-12, 23:50:56 »
kuter@slackware:~/test$ ls -a
./  ../  plik1  plik2  plik3  plik4  plik5  utworz.sh
kuter@slackware:~/test$ find . | grep -v -E "utworz.sh" | xargs echo
. ./plik3 ./plik4 ./plik5 ./plik1 ./plik2
tu najlepiej widać co zwraca, jest na to jakis myk ? ;)

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #8 dnia: 2012-01-13, 01:16:49 »
Masz podany kod jak usunąć z listy plików wybrane nazwy, a nie wiesz jak usunąć z niej kropkę? Pomyśl.

Zresztą jeżeli usuwasz tylko pliki a nie katalogi, to sprawa jest jeszcze prostsza, bo kropka jest oznaczona jako katalog i wystarczy włączyć jeden filtr w findzie, żeby ją pomijał.

ktr

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #9 dnia: 2012-01-13, 07:08:01 »
kuter@slackware:~/test$ find /home/kuter/test/* | grep -v -E "utworz.sh" | xargs rm  
kuter@slackware:~/test$ find ../test/* | grep -v -E "utworz.sh" | xargs rm
dziala i co najwazniejsze nie zwraca błedu.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #10 dnia: 2012-01-13, 10:32:00 »
Nie zadziała, jeżeli plik rozpoczyna się kropką. Po prostu pomijasz wszystkie ukryte pliki i katalogi, również te, które mogą być istotne, nic więcej. Nie będziesz w stanie usunąć pliku rozpoczynającego się kropką, np ".test", albo podobny.

liqserver

  • Gość
usuwanie plikow oprócz kilku wybranych
« Odpowiedź #11 dnia: 2012-04-24, 14:17:47 »
Witam, Ja proponuję wrzucić następującą linię kodu, tylko należy najpierw podmienić
'NAZWA_PLIKU' na nazwę pliku którego nie chcemy usuwać.

system("pwd | find * | grep -v -E \\"NAZWA_PLIKU\\" | xargs rm -f");
Powyższa linijka kodu sama wprowadzi ścieżkę i usunie wszystkie pliki prócz
pliku o nazwie 'NAZWA_PLIKU'.
Przykładowe zastosowanie: Program usuwa wszystkie pliki w folderze z którego
został odpalony. Usuwa wszystkie pliki oprócz siebie ;)
Pozdrawiam!