Nowe posty

Autor Wątek: [bash]Usuniecie plikow z liczba slow 5  (Przeczytany 2223 razy)

kruczek23

  • Gość
[bash]Usuniecie plikow z liczba slow 5
« dnia: 2012-10-23, 13:50:05 »
Chodzi o polecenie które usunie wszystkie pliki *.log (z katalogu) jezeli liczba słów w nich zawarta jest równa 5.
Zacząłem kombinować w ten sposób:
wc -w *.log | grep 5
otrzymuje tak te pliki ale z programu grep chciałbym przekazać je do rm który je usunie, ale coś nie chce działać czy mógłby ktoś pomóc ? czy w ogóle dobrze kombinuje ?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3066
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[bash]Usuniecie plikow z liczba slow 5
« Odpowiedź #1 dnia: 2012-10-23, 15:01:25 »
Ten grep złapie też pliki
* Z 5 w nazwie
* Z 55 555 105, 500 i dowolną ilością słów, byle gdzieś było 5.

1. Struktura wyniku wc -w jest taka:
     281 memtest
      53 memtest.cpp
   10051 oompi.pdf
  236106 openmpi-1.6.2.tar.bz2
czyli ilość - spacja - nazwa

2. Wynik puść przez AWKa. Jeżeli pierwsza kolumna równa się (dokładnie) 5, to wypisz drugą kolumnę. W wyniku dostaniesz listę pasujących plików.

3. Masz czarodziejski (i niebezpieczny) program xargs, który jako parametr bierze nazwę programu do uruchomienia a argumenty dla niego przyjmuje ze standardowego wejścia (np poprzedniego programu w potoku)

Czyli - w skrócie:

wc -w *.log | awk COŚTAMCOŚTAM | xargs COŚTAMCOŚTAM

COŚTAMCOŚTAM sobie dopisz na podstawie dokumentacji awk i xargs.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

kruczek23

  • Gość
[bash]Usuniecie plikow z liczba slow 5
« Odpowiedź #2 dnia: 2012-10-23, 16:52:43 »
awk -F"5" '{print $2}' to działa ale xargs rm -rf juz nie