Sortuj pliki w katalogu rekurencyjnie na podstawie daty ostatniej modyfikacji
Zmodyfikowałem wiele plików w moim katalogu. Chcę wiedzieć, jakie to pliki, sortując je według daty ostatniej modyfikacji i chcę, aby niektóre rozszerzenia były wykluczone
w katalogu svn mam też wiele plików .svn, których nie chcę wyświetlać w tym rodzaju
Odpowiedzi:
da ci coś takiego
źródło
find -not -iname '*.ext'
.Jeśli chcesz spłaszczyć strukturę katalogów (sortując według daty według wszystkich plików we wszystkich katalogach, ignorując katalog, w którym znajdują się pliki), możesz wybrać
find
podejście sugerowane przez @yeti. Jeśli chcesz zachować strukturę katalogów, możesz spróbowaćktóry sortuje na podstawie katalogu.
źródło
W bash biegnij
shopt -s globstar
pierwszy. W ksh93 uruchomset -o globstar
pierwszy. W Zsh jesteś już ustawiony.Zwróci błąd, jeśli masz tyle plików, że limit długości wiersza poleceń w systemie został przekroczony. W Zsh możesz zamiast tego użyć tego:
źródło
Zakładając, że wolisz znaleźć GNU, spróbuj:
źródło
find
„s-printf
opcję, aby uniknąć wywoływania oddzielny proces (lub kilka, w zależności od liczby plików). Zobacz moją odpowiedź na przykład.stat
szansę i pokazać-exec ... +
. Naprawdę! Czasami myślę, żestat
zasługuje na większą uwagę ... i nikt nie powinien brać stąd przepisów, nie czytając o składnikach i nie myśląc o konsekwencjach ...-printf
...find
nie masz-printf
, możesz użyć,-exec sh -c 'printf...'
aby uzyskać wiele z tej samej funkcjonalności. Obejmuje to również dostęp do$(pwd)
w pełni kwalifikowanych ścieżek.stat
. Czasami więc chcę tylko zwrócić uwagę nastat
... Myślę, żestat
zasługuje na to ...Aby dokładnie wyświetlić listę nazw plików tylko przy użyciu najnowszych narzędzi GNU:
źródło
Pozwala to uniknąć problemów z listą argumentów, ponieważ jedynym argumentem
ls
, jaki kiedykolwiek otrzymasz, jest nazwa katalogu, który chcesz wyświetlić. Możesz to zrobić ze wszystkim, co chcesz.Powłoka
. sources
jest|pipe
jak skrypt powłoki - jest to ten sam proces i nie ma problemów, które można napotkać poexecve
wywołaniu.W każdym razie - powyższe idzie tylko na trzy głębokości, które można regulować poprzez zmianę
maxdepth
. Najpierw również głęboko - dzięki temu możesz cofnąć się do bieżącego katalogudepth
.Możesz zauważyć, że dostajesz
$LSCOLORS
- na mojej maszynie zapewnia również starannie wydrukowane kolumny i wszystko, czego chciałbyś odls
- lub, jeśli o to chodzi, wszystko, co możesz sobie wyobrazić, z czym chciałbyś zrobić. source.
NIE SVN
Znowu zrobi wszystko, czego można oczekiwać
ls
. Dlatego ukrywanie.svn
plików jest tak proste, jak zmianals
linii na:Lub jeśli chcesz zobaczyć
svn
rozszerzenia w każdym folderze, ALE./svn
możesz to zmienić, aby całe polecenie wyglądało tak:Osobiście podoba mi się to z ls
-s
i, jeśli cię to obchodzi,-u
posortuję według czasu dostępu, a nie czasu mod.źródło
Ten będzie notować wszystko
files
w<dir>
z najwyższą istotą najstarszy zmodyfikowanyA dzięki temu najnowsza modyfikacja jest najwyższa
Zauważ, że działa to tylko wtedy, gdy lista nazw plików nie przekracza całkowitego limitu długości wiersza poleceń w twoim systemie.
źródło
xargs -0
(w obu przypadkach).xargs -print0
jest równoważnexargs -p -r -i -n -t -0
lubxargs -inprt0
lubxargs -0ntrip
, co prawdopodobnie nie jest tym, co miałeś na myśli.