ну, если вы говорите о многих и многих тысячах файлов - и таким образом превышаете ваш ARG_MAX
лимит - тогда это не очень хорошо, но самое простое решение:
find . ! -type d -exec ls -t {} +
... которое будет вызывать ls
для каждой партии <=ARG_MAX
файлов, которые оно сможет найти. Нет никаких произвольных ограничений на символы в именах путей, только на максимальное количество аргументов, которые могут быть обработаны вместе.
Вывод будет идентичен выводу find
. Конечно, вы можете использовать любую другую опцию, например -l
или -h
GNU. Вот несколько списков из небольшого дерева, которое я создал неделю назад:
find . ! -type d -exec ls -lht {} +
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 19:00 ./dir/dir1/file
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 19:00 ./dir/dir2/file
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 19:00 ./dir/dir3/file
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 19:00 ./dir2/dir1/file
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 19:00 ./dir2/dir2/file
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 19:00 ./dir2/dir3/file
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 18:57 ./dir/file1
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 18:57 ./dir/file2
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 18:57 ./dir/file3
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 18:57 ./dir2/file1
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 18:57 ./dir2/file2
-rw-r--r-- 1 mikeserv mikeserv 0 Dec 19 18:57 ./dir2/file3
...которые, очевидно, не сгруппированы по каталогам.
На моей машине...
getconf ARG_MAX
2091752
... но я не думаю, что это реалистично. Я думаю, что в среднем это что-то более похожее на 65k или около того.