jaka jest domyślna kolejność sortowania wpisów zwracanych przez polecenie linux find?
Na przykład jeśli wydam
find . -type f -name '*mp3'
a dane wyjściowe składają się z wielu plików w wielu podfolderach, jaka jest domyślna kolejność wyświetlania katalogów? Jednocześnie, jaka jest kolejność sortowania, w jakiej znajdują się pliki w danym katalogu?
Czasami zwraca:
./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3
Zobacz, jak najpierw wyświetlana jest zawartość katalogu B, a następnie katalogu A. Jednocześnie w katalogu A pliki są wyświetlane w śmiesznej kolejności.
-s
parametr do sortowania alfabetycznego wyników.Odpowiedzi:
find
będzie przemierzał drzewo katalogów w kolejności, w której pozycje są przechowywane w pozycjach katalogu. Będzie to (przeważnie) spójne od uruchomienia do uruchomienia na tym samym komputerze i będzie zasadniczo „kolejnością tworzenia plików / katalogów”, jeśli nie zostaną usunięte.Jednak niektóre systemy plików ponownie zamawiają pozycje katalogu w ramach operacji zagęszczania lub gdy rozmiar pozycji wymaga rozszerzenia, więc zawsze istnieje niewielka szansa, że kolejność „surowa” zmieni się z czasem. Jeśli chcesz uzyskać spójne zamówienie, przeprowadź wyjście przez dodatkowy etap sortowania.
źródło
find /path/ -exec ...
z działaniem znacznie szybciej,find /path/
aby najpierw posortować listę plików.Nie powinieneś polegać na konkretnej kolejności wyjściowej,
find
a zamiast tego powinieneś użyćsort
i innych środków do konkretnej kontroli kolejności.źródło
Pracuję w UNIX / Linux odpowiednio od 1984/1991 i pierwsze polecenie, którego się nauczyłem, to znajdź. Linux / GNU umieścił prawie wszystko, czego potrzebujesz w bieżącym poleceniu find, więc pobaw się nim.
Oto kilka pomocnych wskazówek dotyczących sortowania wyników wyszukiwania. Opcja -printf daje wiele opcji umożliwiających bardziej złożone sortowanie i prezentację informacji o pliku. Jest najlepszy w przypadku takich problemów. Zagraj z nim, aby zobaczyć, co będzie dla Ciebie odpowiednie. Korzystając z opcji -printf, możesz dostosowywać i ograniczać wyniki tak, jak chcesz. To bardzo pomaga, gdy trzeba opublikować wyniki. Mam nadzieję, że to komuś pomoże.
Jeśli używasz -ls i chcesz sortować według nazwy pliku, 11. pole to nazwa pliku, dzięki czemu możesz wykonać następujące czynności. Opcja sort -k może również zajmować wiele pól.
find / path -ls | sortuj -k11
Jeśli chcesz dokładniej sortować ziarno według daty / godziny w porządku rosnącym lub malejącym, użyj opcji -printf „”. Więcej informacji znajduje się w instrukcji, ale poniżej znajduje się przykład, który zostanie wydrukowany z ułamkami sekund, dzięki czemu jest bardzo dokładny.
PRZYKŁAD DATA / CZAS: 2016-09-17 + 12: 09: 57.9013929800
Innym sposobem na to bez znaków w ciągu daty / godziny jest.
PRZYKŁADOWA DATA / CZAS: 20160917120013.8101685040
źródło