Chcę więc wyświetlić ( ls
na przykład) wszystkie pliki, które zostały zmienione w ciągu ostatnich siedmiu dni. Jeśli jestem w folderze docroot, powinien on wyglądać „głębiej”.
Na przykład:
File Last changed
docroot
|- myfile1 30.11.2015
|- myfile2 10.11.2015
|- MySub
|-sub1 30.11.2015
|-sub2 10.11.2015
Tak więc ls
(lub cokolwiek pasuje) powinno generować myfile1
i (jeśli to możliwe)
MySub/sub1
.
Czy można to zrobić za pomocą jednego polecenia?
command-line
search
ls
DasSaffe
źródło
źródło
find
mals
opcję, więc możesz to zrobićfind . -type f -mtime -7 -ls
find ... -exec ls -l {} +
które działals -l
znacznie wydajniej - rzadziej przy wielu parametrach. Jest to standardowa opcjafind
określona przez POSIX.Z
zsh
:**/*
będzie szukał plików rekurencyjnie, zaczynając od bieżącego katalogu(.m-7)
jest globalnym kwalifikatorem, gdzie.
wskazuje zwykły plik,m-7
wskazuje pliki, które zostały zmodyfikowane w ciągu ostatnich 7 dniźródło
Poniższe polecenie działa jak marzenie na Mac OSX - może także na Ubuntu…
Znajduje pliki w bieżącym drzewie katalogów, które zostały zmodyfikowane w ciągu ostatnich 7 dni, wyświetla datę modyfikacji + czas i ścieżkę, posortowane jako najnowsze.
Przykładowe dane wyjściowe:
Byłbym wdzięczny za wszelkie opinie od użytkowników ubuntu.
źródło
Niezupełnie o co poproszono ... ale o wiele łatwiej zapamiętać ...
lub
źródło
7 dni to 60 sekund * 60 minut * 24 godziny * 7 dni = 604800 sekund
Sprawdź aktualną datę w sekundach (czas epoki uniksowej):
Odejmij 7 dni w sekundach:
Teraz weź
stat
statystyki poleceń i drukowania dla wszystkich plików w formacie „nazwa + czas w sekundach” i użyjawk
do przycięcia tych plików, których czas modyfikacji jest dłuższy niż obliczona przez nas dataSzczególnie interesujące są 3 ostatnie pliki, ponieważ wiem, że pracowałem nad nimi mniej niż 7 dni temu. Wiem, że to działa
źródło
awk '$2 > 1448271265 {print $0}'
ciebie możesz wprost powiedziećawk '$2 > 1448271265'
. W prawdziwych warunkach awk drukuje bieżącą linię jako akcję domyślną.