Whenever I'm looking for something specific in my directories I like this one liner
Get-ChildItem -Recurse -ErrorAction SilentlyContinue -Path C:\Users\ -Include*.ext
so an example in your case would be
Get-ChildItem -Recurse -ErrorAction SilentlyContinue -Path C:\Users\[Uname]\Downloads -Include *.mp3,*.mov; # etc
From the get-help text
-Path <String[]>
Specifies a path to one or more locations. Wildcards are permitted. The default location is the current directory (.).
-Recurse [<SwitchParameter>]
Indicates that this cmdlet gets the items in the specified locations and in all child items of the locations.
-Include <String[]>
Specifies, as a string array, an item or items that this cmdlet includes in the operation. The value of this parameter qualifies the Path parameter. Enter a path element or pattern, such as *.txt. Wildcards are permitted.
The Include parameter is effective only when the command includes the Recurse parameter or the path leads to the contents of a directory, such as C:\Windows\*, where the wildcard character specifies the contents of the C:\Windows directory.
I'll run a search on a scripts folder looking for PowerShell and Bash files as an example:
Get-ChildItem -Recurse -ErrorAction SilentlyContinue -Path .\Desktop\scripts\ -Include *.ps1,*.sh
Result:
Directory: C:\Users\[user]\Desktop\scripts\Bash
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/22/2018 8:03 PM 84 runit.sh
Directory: C:\Users\[user]\Desktop\scripts\PS
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/19/2018 9:04 PM 173 pass_d.ps1
-a---- 9/7/2017 4:45 PM 345 refresh.ps1
-a---- 5/11/2018 9:05 PM 1589 test.ps1
-a---- 4/20/2018 8:55 PM 273 wifi_list.ps1
This won't take a kind:=music,kind:=video
argument, but you can provide asterisks with file extensions as an array for the -Include *.mp3,*.mov
argument and can search multiple directories similarly -Path /some/directory,some/directory2
.
Running that same one line command piped to | Export-Csv [filename].csv
will save your results as a .csv file.
Tip: PowerShell has tab completion available so you don't have to type out every argument. get-ch<tab>
> Get-ChildItem
, Get-ChildItem -i<tab>
> Get-ChildItem -Include
, etc.