我目前正在編寫一個小腳本/程序來識別和排序Windows目錄中的某些文件。我正在使用ls -n命令來輸出文件列表,以便稍後由grep for Windows使用。但是,使用以下命令:Powershell:輸出重定向問題
ls -n >test.txt
使輸出文件中的文件名的文件擴展名脫離。當我在Powershell控制檯內使用ls -n(無輸出重定向)時,文件擴展名位於輸出中。
有誰知道這個問題是什麼或如何正確使用Powershell?
我目前正在編寫一個小腳本/程序來識別和排序Windows目錄中的某些文件。我正在使用ls -n命令來輸出文件列表,以便稍後由grep for Windows使用。但是,使用以下命令:Powershell:輸出重定向問題
ls -n >test.txt
使輸出文件中的文件名的文件擴展名脫離。當我在Powershell控制檯內使用ls -n(無輸出重定向)時,文件擴展名位於輸出中。
有誰知道這個問題是什麼或如何正確使用Powershell?
也能正常工作對我來說:
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
正如你所看到的,test.txt
包括其他文件的擴展名。
但是,我可以提出一個建議嗎?將文本輸出管道輸出到文件,然後在PowerShell中對其進行格式化並不是很「習慣用法」。這與PowerShell的核心主題有點相反:應該通過對象,而不是文本。你可能會考慮與Get-ChildItem
直接,例如通過將其存儲在一個變量,或將其輸送至Select-Object
輸出工作等
不要在腳本中使用別名,因爲你不能依賴他們所設定的無處不在。
這將獲得當前目錄中所有文件(並且沒有目錄)的列表,按字母順序對其進行排序,並將其寫入test.txt
。
Get-ChildItem |
where-object (!$_.PSIsContainer}|
select-object -expandproperty Name|
sort-object | out-file test.txt
如果你在這些文件中搜索字符串,你可以使用select-string
而不是grep的,以保持它完全在PowerShell中。
Get-ChildItem |
where-object (!$_.PSIsContainer}|
select-string PATTERN
感謝您的回覆,裂變。我意識到它實際上是一個文本編輯器,它出於某種原因錯誤地顯示了文件內容(我從來沒有遇到過問題)。我覺得那很愚蠢。 – ratnapper