Za pomocą find
polecenia mogę wyświetlać nazwy katalogów na wielu poziomach. Następujące polecenie wyświetla wszystkie katalogi pod /var
ścieżką o głębokości 2:
find /var -maxdepth 2 -type d;
Wynik pokazuje:
/var
/var/log
/var/log/sssd
/var/log/samba
/var/log/audit
/var/log/ConsoleKit
/var/log/gdm
/var/log/sa
Za pomocą stat
polecenia mogę znaleźć zmodyfikowaną datę i godzinę:
stat /var/log/samba | grep 'Modify:'
Wynik to:
Modify: 2014-01-02 11:21:27.762346214 -0800
Czy istnieje sposób na połączenie tych dwóch poleceń, aby katalogi były wyświetlane ze zmodyfikowaną datą i godziną?
-printf
opcja pozwala uniknąć wywoływaniastat
każdego znalezionego pliku. W moim teście polecenie daje prawie identyczny wynik, tylko dodatkowa cyfra z dokładnością do sekund.stat
to-f
.find /var -maxdepth 2 -type d -exec stat -f "%t%Sm %N" {} \;
Zaakceptowana odpowiedź działa, ale jest powolna. Nie ma potrzeby wykonywania statystyk dla każdego katalogu, find podaje datę modyfikacji i możesz po prostu wydrukować ją bezpośrednio. Oto równoważne polecenie, które jest znacznie szybsze:
źródło
find
z msys działającym w systemie Windows, któremu brakujestat
polecenia.%Tc
wypisuje "datę i godzinę lokalną", zezwalając na łańcuch formatu "% p% Tc"find /var -maxdepth 2 -type d | xargs ls -oAHd
Jest to sposób na uzyskanie podstawowego
ls
polecenia wyświetlającego pełną ścieżkę katalogu. Choćls
ma-R
parametr dla rekurencyjnego wyszukiwania, ścieżki nie będą wyświetlane w wynikach z-l
lub-o
opcji (w OSX, przynajmniej), ex z:ls -lR
.źródło
find /var -maxdepth 2 -type d -ls
jest po prostu prostszy.Najnowsze wersje GNU zawierają
find
również-printf
opcję, która zawiera pola daty. Jeśli potrzebujesz wydrukować nazwę pliku i czas modyfikacji w standardowym formacie „C”, możesz użyć-printf "%c %p\n"
.Jeśli chcesz, aby data miała określony format, możesz użyć
%C
znaku następującego po nim. Na przykład rok 4-cyfrowy byłby%CY
zY
bycia znaków dla 4-cyfrowy rok.Pamiętaj, że jeśli potrzebujesz wielu pól, musisz określić je
%C
wiele razy. Na przykład wyglądałby format RRRR-MM-DD%CY-%Cm-%Cd
.Sprawdź strony podręcznika lub dokumentację online, aby uzyskać dodatkowe informacje.
Oto działający przykład:
źródło
Kolejny, którego używam do drukowania zmodyfikowanych plików w ciągu ostatniego dnia. ls -ltr daje mi bardziej szczegółowe informacje, takie jak czas modyfikacji, użytkownik itp
źródło
-name '*.ext'
specyfikacji.ls -lt
Sortuje według czasu modyfikacji.)-print0
zamiast,-print
a następnie użyćxargs -0
zamiastxargs
.xargs
może wywołać polecenie (ls
tutaj) kilka razy, w zależności od liczby parametrów, aby zapobiec wywołaniu polecenia z nadmierną liczbą parametrów. Dlatego sortowanie (bez względu na kryterium, w tym według daty) może dać „zły” wynik (=> lista posortowanych podzbiorów, zamiast pełnego posortowanego zestawu).spróbuj tej linii:
tutaj go uruchomiłem, wyświetla:
źródło