Jak mogę użyć ls
w systemie Linux, aby uzyskać listę nazw plików tylko datę i rozmiar. Nie muszę widzieć innych informacji, takich jak właściciel lub pozwolenie. czy to możliwe?
Jak mogę użyć ls
w systemie Linux, aby uzyskać listę nazw plików tylko datę i rozmiar. Nie muszę widzieć innych informacji, takich jak właściciel lub pozwolenie. czy to możliwe?
Odpowiedzi:
Dlaczego nie użyć stat
zamiast ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, możesz dodać informacje o szerokości do ciągu formatu, np. Funkcję C printf, np. "%y %8s %n"
Nie jest to udokumentowane, ale wydaje się działać (coreutils 8.17, Fedora 18)
ls
mogę go wyprowadzić za pomocą separatora tysięcy znaków. Jak to działa stat
?
ls
. Co z kolorami?
Możesz uzyskać dużą kontrolę nad sposobem wyświetlania plików za pomocą tego find
narzędzia. ls
tak naprawdę nie pozwala określić kolumn, które chcesz.
Na przykład:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
Argument printf
akcji jest szczegółowo opisany na stronie podręcznika. Możesz wybrać inną informację o czasie, jaki rozmiar chcesz (rozmiar pliku lub zastosowane bloki dysku), itp. Możesz także uczynić to bezpiecznym dla nietypowych nazw plików, jeśli konieczne jest dalsze przetwarzanie.
%C+
(wyjście „2016-08-29 + 10: 57: 56.9201257840”) i %Cc
(wyjście „Mo 29 sierpnia 2016 10:57:56 CEST”)
Zawsze możesz użyć innego narzędzia, takiego jak awk
sformatowanie wyniku ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1. Tak, generalnie, nie powinieneś analizować wyniku ls, ale w tym przypadku pytanie specjalnie go wymaga ...
ls
zostanie alias (powiedzmy alias ls='ls -i'
). Naprawdę powinieneś bardzo uważać, jeśli chcesz zająć się analizowaniem wyników ls.
ls
, ale tego właśnie chciał OP…
/bin/ls
by uniknąć problemu alias.)
ls
którym oboje się zgadzamy, nie spełni wymogu białych znaków. /bin/ls
Sugestia jest dobry.
-h
go, aby był czytelny dla człowieka. W szczególności, że stosuje się: ls -lah | awk '{print $5,$6,$7,$8}'
co daje: 4.0K Jan 24 18:17
. To prawda, że oryginalne rozwiązanie nie mówi nic o awk, ale w Linuksie powinniśmy założyć, że wyjście procesu zawsze będzie wejściem do innego procesu, prawda? ;)
Możesz także użyć polecenia „data”. Jest bardzo łatwy w użyciu:
date -r [nazwa pliku]
date -r foo*.txt
->date: extra operand "foo2.txt"
gdzie przestrzeń jest zdefiniowana jako separator, a f6 oznacza pole 6
ls -lt | cut -d" " -f6-
Możesz potokować dwa polecenia
ls -l|cut -d" " -f5
ls
jest świetny, ponieważ ma bardzo szybkie sortowanie według daty i godziny, ale trudno jest sformatować. Sugeruję użycie tokena w stylu --time, tak jak--time-style='+&%Y%m%d+%H%M%S.%N'
tam, gdzie token to „&”, używając tego jako odniesienia, możesz dalej analizować dane wyjściowe,sed
dzięki czemu możesz również cofnąć się, tak jak zanim token ma rozmiar! Jeśli ktoś chce napisać to jako kompletną odpowiedź, nie krępuj się, w tej chwili za bardzo śpię :)