Получилась однажды интересная ситуация, в одной директории оказались миллионы файлов.
Причем часть из них — нужные.
При попытке посмотреть список файлов естественно получится ступор на длительное время.
Как вариант их можно посмотреть через FTP, у которого за частую стандартный лимит на количество отображаемых файлов 10 000, например FTP клиентом FileZilla удобно перемещать файлы по директориям, но этот вариант длительный, из-за того что время еще тратится на FTP запросы, нагрузка на диск при этом низкая.
Если файлы не нужные, их можно удалить командой (с запросом подтверждения на удаление):
rm -r /dir/
Или удалить все без запроса вместе с директорией:
rm -rf /dir/
В моем случае не нужными были мелкие файлы, по этому перейдя в нужную директорию, удалил командой ниже все что меньше указанного размера:
cd /dir/ find -size -2 -type f -print -delete
Перед удалением можно посмотреть количество таких файлов и общее количество, однако это тоже длительные процесс:
find -maxdepth 1 -size -2 -type f -print | wc -l find -maxdepth 1 -type f -print | wc -l
Если вместо -2 указать 0, то будут удаляться файлы с нулевым размером, то есть пустые.
Если нужно отсортировать файлы по директориям, перейдем в директорию с файлами, создадим нужные директории, например по датам и переместим файлы по шаблону (все у которых название начинается на 2017, -maxdepth 1 указывает что не нужно искать файлы в поддиректориях):
cd /dir/ mkdir 2017 find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /dir/2017 {} \+
Результат выполнения можно записывать в файл добавив к команде «> файл», например:
find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /dir/2017 {} \+ > /dir/dir/file.log