0

I am currently writing a little script/program that will identify and sort certain files in a Windows directory. I am using the ls -n command to output a list of files to later be used by grep for Windows. However, using the following command:

ls -n >test.txt 

leaves off the file extensions for file names in the output file. When I use ls -n inside the Powershell console (no output redirection), the file extensions are in the output.

Does anyone know what the issue is or how to do this properly with Powershell?

2 Answers 2

1

This works fine for me:

PS C:\Users\fission\Desktop\test> dir Directory: C:\Users\fission\Desktop\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2011-06-19 3:22 PM 1250 capture.pcap -a--- 2013-09-26 5:21 PM 154205 fail.pml -a--- 2013-09-25 12:53 PM 1676383 hashfxn.exe PS C:\Users\fission\Desktop\test> ls -n >test.txt PS C:\Users\fission\Desktop\test> type test.txt capture.pcap fail.pml hashfxn.exe test.txt 

As you can see, test.txt includes the extensions of the other files.


But may I make a suggestion? Piping text output to a file, then grepping it isn't very "idiomatic" in PowerShell. It's a bit counter to a central theme of PowerShell: one should pass objects, not text. You might consider working with the output of Get-ChildItem directly, eg by storing it in a variable, or piping it to Select-Object, etc.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for the reply, fission. I realized that it was actually a text editor that is for some reason showing the file contents incorrectly (which I have never had issues with before). I feel stupid for that one.
0

Don't use aliases in scripts, because you can't depend upon them being set the same everywhere.

This will get you a listing of all files (and no directories) in the current directory, sort it alphabetically, and write it to test.txt.

Get-ChildItem | where-object (!$_.PSIsContainer}| select-object -expandproperty Name| sort-object | out-file test.txt 

If you're searching for strings within those files, you can use select-string instead of grep, to keep it completely within PowerShell.

Get-ChildItem | where-object (!$_.PSIsContainer}| select-string PATTERN 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.