Я попытался сделать простую вещь с PowerShell, найти файлы, которые занимают больше всего места на диске. Я использовал ls
+ sort
и ... это заняло у меня навсегда.
Иногда я использую далеко менеджер и по сравнению с PowerShell это выглядит намного быстрее и стабильнее.
Хорошо, он основан на .NET, но .NET не такой медленный. Я ожидаю увидеть что-то легкое и быстрое! Это консоль!
Еще одна вещь, я хотел бы иметь что-то вроде IEnumerable
в PowerShell, чтобы сразу увидеть результаты. Возможно ли достичь? Это может немного помочь, ожидая результатов, потому что иногда я думаю, что это просто тусуется.
РЕДАКТИРОВАТЬ
Я делаю что-то подобное
ls -Recurse -ErrorAction SilentlyContinue | sort -Property Size | select -First 10
И я предполагаю, что это может занять ДНИ.
РЕДАКТИРОВАТЬ
Просто для сравнения.
Код C # занял у меня около 2 мин. Конечно, он не идеален и не обрабатывает все файлы, но обработал по крайней мере> 95%.
void Main()
{
GetFilesSize(@"C:\").OrderByDescending(x => x).Take(10).ToList();
}
public IEnumerable<long> GetFilesSize(string directory)
{
var accessDenied = false;
var dirList = new string[0];
try
{
dirList = Directory.GetDirectories(directory);
}
catch{
accessDenied = true;
}
if(accessDenied) yield break;
foreach (var dir in dirList)
{
foreach (var size in GetFilesSize(dir))
{
yield return size;
}
}
foreach (var fileName in Directory.GetFiles(directory))
{
if(fileName.Length>=260) continue;
yield return new FileInfo(fileName).Length;
}
}