Nowe posty

xx Odpowiednie wykorzystanie rdzeni P i E procesora (1)
Dzisiaj o 06:44:59
xx Samba DC/AD problem z DNS (0)
2024-07-25, 12:42:23
xx DNS i WWW na virtualbox (4)
2024-07-24, 10:30:38
xx Instalacja Manjaro Linux (11)
2024-07-13, 22:57:31
xx Linux Lite 6.6. Po uruchomieniu z DVD przeglądarka Chrome jest nieaktywna (12)
2024-07-10, 22:33:30
xx Laptop MSI CR500 - nie akceptuje linuksa (6)
2024-07-03, 05:30:18
xx Co to jest ? (3)
2024-07-02, 13:36:58
xx Nowa wersja libreoffice (1)
2024-06-30, 18:22:49
xx Dystrybucja - środowisko graficzna dla amigowca (MUI) (4)
2024-06-30, 12:14:25
xx Jaki kod błędu zwracać z kernela? (3)
2024-06-09, 12:29:22

Autor Wątek: Jak poprawić polecenie wyszukujące największe pliki?  (Przeczytany 1741 razy)

Offline Ravenik

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Wymyśliłem że chcę znaleźć w pewnym katalogu (i podkatalogach) największe pliki na serwerze NAS Austor (potem je będę kasował). Takie polecenie działa:
find . -type f -print0 | xargs -0 du -m "{}" | sort -n -r -k 1 | head -n 20
Chcę to wpisać do skryptu. Jednak w wyniku tego polecenia dostaję przed listą plików jak niżej:

du: {}: No such file or directory
(...)
du: {}: No such file or directory
56320   ./Msi-Ge75-NVME-1/C-root/!!!!!!Main-Storage/!!!!!WAŻNE-SCH/wazneschn.tc
30437   ./Evo-2T/D-root/!Malinowo/max2play/210115 Obraz m2p PI4-8GB, pilot ok, Kodi mrozi, przed update-upgrade/kingston-64G.img
(...)

Pytanie: jak elegancko zmodyfikować ww. polecenie abym nie dostawał w jego wyniku na początku: "du: {}: No such file or directory" powtórzonego ileś razy? Ja prawdę mówiąc nie wiem jak to zrobić ani elegancko ani nieelegancko. Przez nielegancko rozumiem: przekierowując błędy do /dev/null itp. Prośba o pomoc.
« Ostatnia zmiana: 2021-06-12, 23:05:37 wysłana przez Ravenik »

Offline Ravenik

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Jak poprawić polecenie wyszukujące największe pliki?
« Odpowiedź #1 dnia: 2021-06-13, 00:17:31 »
Inne podejście:
find . -type f -size +100M -exec du -m  {} ';' | sort -n -r -k 1 | head -n 20
Powyższe nie wypluwa błędów, ale muszę się ograniczać do plików powyżej 100MB, bo ta metoda jest z 200 razy wolniejsza niż ta z pierwszego postu - jeśli zapuszcza się ją dla wszystkich plików czyli:
 find . -type f -exec du -m  {} ';' | sort -n -r -k 1 | head -n 20
Jeśli ktoś ma pomysł jak naprawić polecenie z pierwszego postu to prośba o odpowiedź

Offline Ravenik

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Jak poprawić polecenie wyszukujące największe pliki?
« Odpowiedź #2 dnia: 2021-06-13, 01:48:08 »
Kolejne podejście i tym razem działa dobrze:

find . -type f -print0 | xargs -0 du -m  | sort -n -r -k 1 | cut -f 2  | head -n 20 | while read line; do du -h "$line";  done
« Ostatnia zmiana: 2021-06-13, 18:50:18 wysłana przez Ravenik »

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2771
  • 1709
    • Zobacz profil
Odp: Jak poprawić polecenie wyszukujące największe pliki?
« Odpowiedź #3 dnia: 2021-06-13, 20:00:52 »
find . -type f -exec du -ah {} + | sort -hr | head -n 20
Może być 0,1 sekundy szybsze.
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.