Skocz do zawartości

Fedora 18 I 16.000.000 Plików W Jednym Katalogu -Może Jakiś Skrypt W Bashu Co To Usunie?


Jasiek_M

Rekomendowane odpowiedzi

Hej,

Niestety praca po nocy nie popłaca- potrzebowałem na Windowsie za pomocą 7zipa podzielić katalog z muzyka na party po 3700Mb(by weszły na pendrive) ale nie dopisałem M i wyszedł podział po 3700b. Teraz na partycji w jednym katalogu mam 16.000.000plików(słownie 16 milionów!!! @_@). Dla Windowsa cios okazał się zabójczy-od razu Blue Screen linux się nie przejął-starczy po kliknięciu na partycję przerwać wczytywanie i można normalnie używać.

Teraz pytanie dnia jak to usunąć bo rm -rf Muzyka.zip* nie działa-za długa lista argumentów. O tym że nie da rady tego otworzyć w graficznym trybie chyba wspominać nie muszę.

Myślę nad jakimś skryptem w bashu co będzie w pętli wyszukiwał pierwszy plik pasujący do wzorca i go usuwał- ktoś się może orientuje jak taka pętla powinna wyglądać? Bo usunięcie wszystkich plików pasujących do wzorca również chyba wywali program więc prawdopodobnie będzie trzeba usuwać po jednym? Ma ktoś jakiś dobry pomysł?

Pozdrawiam

J.M

 

 

Edit: może coś w ten deseń?

#!/bin/bash

FILES=/run/media/Pliki_Inne*

for f in $FILES
do
 
if [f = Muzyka.zip*]
then 
	rm -rf $f

done

 


 

Odnośnik do komentarza
Udostępnij na innych stronach

Dobrze Ci tak. Nie praca po nocy nie popłaca a praca na Windowsie.

 

Pewnie w bash pętlą for dasz radę albo while. Jaki jest wzorzec tych plików? Pewnie jakiś numerek mają i stałą część nazwy więc łatwo będzie się iterować.

Odnośnik do komentarza
Udostępnij na innych stronach

wzorzec podałem "Muzyka.zip.*" bo każdy się nazywa Muzyka.zip.<numer>.

 

Powie mi ktoś co robię źle(./skrypt: line 7: [f: nie znaleziono polecenia):

#!/bin/bash

FILES=/run/media/Pliki_Inne/Muzyka*

for f in $FILES
do
	if [f = Muzyka.zip*]
	then 
		rm -rf $f
	fi
done

 


 

Odnośnik do komentarza
Udostępnij na innych stronach

if [f = Muzyka.zip*] - to jest bez sensu, bo wybrałeś przecież tylko pliki, które Cię interesują :) A jeśli już musisz, to raczej $f niż f, bo w tym miejscu już korzystasz ze zmiennej a nie inicjujesz ją wartością Muzyka.zip*.

 

Myślę, że z basha jednolinijkowo można

 
FILES=/run/media/Pliki_Inne/Muzyka.zip* ; for f in $FILES ; do rm -rf $f ; done
Odnośnik do komentarza
Udostępnij na innych stronach

Ile Ci usuwała ta komenda 20.000 plików? Bo u mnie już prawie dwie godziny polecenie działa i nie wiem czy cokolwiek konstruktywnego robi :wacko:

Może w innej konsoli wklep parę razy

df | grep "/run/media/Pliki_Inne"

Wolne miejsce na partycji powinno rosnąć.

 

Oraz dodatkowo

df -i | grep "/run/media/Pliki_Inne"

Powinno się zmieniać o 1 z każdym plikiem.

Odnośnik do komentarza
Udostępnij na innych stronach

Ile Ci usuwała ta komenda 20.000 plików?

Dokładnie nie pamiętam, ale jakoś chyba 3-4 tys. na minutę. Z tym, że ja to sobie na VB testowałem z jednym rdzeniem i 350MB RAM. Normalnie powinno być szybciej. Jak sprawdzić czy są efekty, to już Mentat wyżej napisał.
Odnośnik do komentarza
Udostępnij na innych stronach

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ę...