MC, 16:26 piątek, 12.04.2013 r.
Ilustracja do artykułu: Linux find - Jak znaleźć pliki mniejsze lub większe niż

Linux find - Jak znaleźć pliki mniejsze lub większe niż

W tej notatce chciałbym pokazać jak w prosty sposób przy pomocy programu find, możemy znaleźć pliki spełniające jakiś warunek dotyczący ich rozmiaru. Posłużę się tutaj przykładem ich usuwania, zatem spróbujemy skasować pliki równe jakiemuś rozmiarowi, mniejsze od niego, bądź większe.

Jak przekazać do find warunek na rozmiar pliku?

W dokumentacji polecenia find znaleźć możemy informację, że przy pomocy opcji -size, mamy możliwość wybrania plików ze względu na ich rozmiar. Najprostsze wywołanie może przyjąć postać:
find . -type f -size 5k
Jego rezultatem będzie wypisanie ścieżek plików znajdujących się w bieżącym katalogu, których rozmiar równy jest 5 kB. Już w tym miejscu warto wspomnieć jakie jednostki rozmiaru przyjmuje program find. A są to:
  • b - blok 512 bajtów (jednostka domyślna)
  • c - bajty
  • w - jednostka dwubajtowa (two-byte word)
  • k - kilobajty (1024 bajty)
  • M - megabajty (1048576 bajty)
  • G - gigabajty (1073741824 bajty)

A jak znajdować pliki większe bądź mniejsze od wskazanego rozmiaru?

Trzeba przyznać, że znajdowanie plików o dokładnie zdefiniowanym rozmiarze, jest zdecydowanie mniej użyteczne niż selekcja plików mniejszych bądź większych od pewnej wartości. Wywołanie na szczęście jest równie proste. Należy jedynie wzbogacić je o znak +/- podczas definiowania rozmiaru pliku. I tak, aby znaleźć pliki mniejsze niż 100 kB, możemy wydać komendę:
find . -type f -size -100k
Jak widać, pojawił się minus, który stanowi o tym, że interesują nas pliki mniejsze. No i jak na pewno nietrudno się już domyślić, dla plików większych od wskazanego rozmiaru, użyjemy znaku +:
find . -type f -size +100k

A co z tym usuwaniem plików?

Obiecaliśmy sobie również coś począć z tymi wyselekcjonowanymi po rozmiarze plikami. Spróbujemy więc je usunąć. Pisałem już kilkukrotnie o poleceniu xargs, którego użyjemy i w tym wypadku. Jeżeli stanowi ono dla kogoś zagadkę, to odsyłam nieco niżej, do artykułów powiązanych, gdzie dokładniej opisuję zasadę jego działania. W skrócie mówiąc, przekażemy za pomocą tego polecenia, wybrane pliki do komendy rm, która z kolei usunie je z dysku. Jeśli więc zechcemy usunąć pliki, np. mniejsze od tych użytych już przez nas 100 kB, to możemy posłużyć się wywołaniem:
find . -type f -size -100k | xargs rm

I to właściwie tyle. Opcja ta jest bardzo przydatna w wielu kontekstach pracy z komputerem, wiec warto mieć ją w pamięci.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: