Chcę sortować tylko pliki według dat aktualizacji, w tym podkatalogów.
I okazało się ls -lrtR | grep ^-
. ale wydaje się, że nie sortuje według dat aktualizacji.
I muszę zapisać tę listę do pliku. Czy to możliwe?
Apr 01 2010 InsideDoosanServiceImpl.class // in A directory
Apr 08 2010 MainController.class // in B directory
Apr 07 2010 RecommendController.class // in B directory
Apr 01 2010 MainDao.class // in B directory
Mam na myśli, że cała lista nie jest uporządkowana według daty, ale najpierw uporządkowana według folderu i uporządkowana według daty.
Chcę najpierw uporządkować listę według daty, zawierającą wszystkie podkatalogi.
ls -lrt
.xargs
wykonanie wielu wywołańls
, ponieważ wtedy pliki są odpowiednio sortowane w ramach każdegols
wywołania, ale brakuje spójnego globalnego porządku na wyjściu.Z ls, -R będzie ponownie katalogować, a -t będzie sortować według modyfikacji. Jednak przegląda katalogi rekurencyjnie i stosuje -t do każdego katalogu. Nie gromadzi wszystkich plików ze wszystkich katalogów, a następnie nie sortuje. (O ile rozumiem, to drugie jest tym, czego chcesz)
Za pomocą gnu find (1) możesz określić format danych wyjściowych, aby uwzględnić liczbę sekund od epoki i nazwę pliku, a następnie możesz potokować to do sortowania (1).
źródło
GNU find
, pomaga. Ale OP działa naAIX
maszynach, więcGNU find
nie był dla niego dostępny.ls
nie można gromadzić plików przed sortowaniem.ls
jest tak szybki w porównaniu dofind
.ls
ifind
czyta te same dane, więc nie wyobrażam sobie żadnego powodu, dla którego ls powinien być znacznie szybszy niż znajdowanie. W moim systemie wyszukiwanie jest 5 razy szybsze (przeszukuje około pół miliona plików)find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txt
uzyskując wpisy wyjściowe, takie jak1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt
.