Мне нужен список всех путей к файлам (не только имен файлов), всех файлов, которые были обнаружены за последние 4 года. Файл должен иметь расширение .xxx
Я пытаюсь это:
ls –recurse -filter *.xxx | where-object {$_.lastwritetime -gt (get-date).addDays(-1460)}
Кажется, это работает. Однако результаты не в том формате, который мне нужен:
Directory: \\networkfolder\customerfolder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 18.02.2019 10:23 1558 file.xxx
Мне нужен список со всеми путями, например:
18.02.2019 10:23 1558 \\networkfolder\customerfolder\file.xxx
18.02.2019 11:23 1558 \\networkfolder\customerfolder2\file.xxx
18.02.2019 11:23 1558 \\networkfolder\customerfolder3\file.xxx
Как я могу этого добиться? Я анализирую огромный список из тысяч папок с дочерними папками, поэтому он должен быть рекурсивным и в чистом формате, чтобы другой человек мог легко переходить один за другим по этим сетевым путям и выполнять свою работу с этими файлами.
Select-Object
может вам помочь. См. этот связь для получения подробной информации об этом.
ls –recurse -filter *.xxx | where-object {$_.lastwritetime -gt (get-date).addDays(-1460)} | Select-Object LastWriteName, Length, FullName
Это из-за форматирования по умолчанию в Powershell. У вас есть два варианта. Вариант 1: вы добавляете ` | Format-List` к команде в моем ответе. Вариант 2. Если вы используете PowerShell 5.x в Windows, вы можете добавить | Out-GridView
. Если вам нужен контент в CSV-файле, вы можете добавить | Convertto-CSV | Out-file temp.csv
. Тебе решать.
Спасибо, это почти то, что я хочу, но это не работает для длинных имен файлов:
LastWriteName Length FullName ------------- ------ -------- 7179 \\longpath\hardware.xxx 3208 \\longpath\hardware323523.xxx 1558 \\longpath\sagsdgsdasdgdahsfgu...
Для длинных имен файлов добавляется 3 точки... Есть ли способ избежать этого?