Poszukuję polecenia Unix, aby wydrukować pliki o takim rozmiarze. Użyłem tego, ale to nie zadziałało.Znajdź pliki o rozmiarze w systemie Unix
find . -size +10000k -print.
Chcę wydrukować rozmiar pliku wraz z nazwą pliku/katalogu.
Poszukuję polecenia Unix, aby wydrukować pliki o takim rozmiarze. Użyłem tego, ale to nie zadziałało.Znajdź pliki o rozmiarze w systemie Unix
find . -size +10000k -print.
Chcę wydrukować rozmiar pliku wraz z nazwą pliku/katalogu.
find . -size +10000k -exec ls -sd {} +
Jeśli wersja find
nie zaakceptuje notacji +
(który działa raczej jak xargs
robi), a następnie można użyć (GNU find
i xargs
, więc find
prawdopodobnie obsługuje +
tak):
find . -size +10000k -print0 | xargs -0 ls -sd
lub możesz wymienić +
na \;
(i żyć ze względną nieefektywnością tego) lub możesz żyć z problemami powodowanymi przez spacje w nazwach i używać przenośnego:
find . -size +10000k -print | xargs ls -sd
-d
na poleceniach ls
zapewnia, że jeśli katalog jest kiedykolwiek znaleziono (mało prawdopodobne, ale ...), to informacja zostanie wydrukowany katalog, a nie plików w katalogu. A jeśli szukasz plików większych niż 1 MB (jak sugeruje teraz usunięty komentarz), musisz dostosować +10000k
do 1000k
lub może +1024k
lub +2048
(dla bloków 512-bajtowych, domyślną jednostką dla -size
) . Spowoduje to wyświetlenie rozmiaru, a następnie nazwy pliku. Można także uniknąć konieczności dodania -d
przez dodanie -type f
do polecenia .
dzięki. Użyłem find. -size + 300000k -print | xargs ls -sd 2>/dev/null –
Zakładając, że GNU znaleźć:
find . -size +10000k -printf '%s %f\n'
Jeśli chcesz stałą szerokość na polu wielkości, można zrobić coś takiego:
find . -size +10000k -printf '%10s %f\n'
Zauważ, że -size +1000k
wybiera plików co najmniej 10.240.000 bajty (k
to 1024, a nie 1000). Powiedziałeś w komentarzu, że chcesz plików większych niż 1M; jeśli to 1024 * 1024 bajtów, to:
find . -size +1M ...
rade - oprócz tego, że będzie to również wydrukować rozmiaru i nazw plików, które są dokładnie 1024 * 1024 bajtów. Jeśli to ma znaczenie, możesz użyć:
find . -size +1048575c ...
Musisz zdecydować, jakie kryterium chcesz.
Aby uzyskać bajty (znaki) zamiast domyślnych bloków 512-bajtowych, potrzebujesz 'c' po' + 1048575'. –
@ JonathanLeffler: Naprawiono, dziękuję! –
Znajdź można użyć do wydrukowania rozmiaru pliku w bajtach z% s jako printf. % h /% f drukuje odpowiednio prefiks katalogu i nazwę pliku. \ n wymusza znak nowej linii.
Przykład
find . -size +10000k -printf "%h/%f,%s\n"
Wyjście
./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116
Interesujące. To powinno być udokumentowane jako rozszerzenie GNU (zakładam) do standardu POSIX ['find'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html). –
polecenie to daje mi 'find: nieznany predykat„-print.'' I domniemywać '.' jest naprawdę nie istnieje. Precyzja jest ważna. –
Stack Overflow to strona z pytaniami dotyczącymi programowania i programowania. To pytanie wydaje się być nie na temat, ponieważ nie chodzi o programowanie czy rozwój. Zobacz [Jakie tematy mogę tu zadać] (http://stackoverflow.com/help/on-topic) w Centrum pomocy. Być może lepszym rozwiązaniem będzie [Super użytkownik] (http://superuser.com/) lub [Unix i Linux Stack Exchange] (http://unix.stackexchange.com/). Zobacz także [Gdzie mogę publikować pytania na temat Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww