我正在搜索(1)名稱中包含的所有檔案。這兩個命令都有效:
ls -r *1* -name
ls -r *1`)*
但這不會:
ls -r *1`)* -name
你知道這是為什么嗎?我不確定我是否錯過了Get-ChildItem檔案中的某些內容
uj5u.com熱心網友回復:
解決您的問題的方法實際上是從概念上更簡單的解決方案開始:參考您的通配符模式(作為一個整體 - 如果這沒有幫助,請參閱下一節):
ls -r '*1)*' -name # short for: Get-ChildItem -Recurse -Path '*1)*' -Name
請注意,與 POSIX 兼容的 shell(例如 Bash )不同,在 PowerShell 中,將通配符模式作為單引號或雙引號字串傳遞是非常好的:
此類模式不是由PowerShell 本身處理(例如,在 Bash 中的方式),而是由目標命令(如果支持)處理。因此,用于傳遞它們的句法形式是偶然的(例如,與 Bash 中的通配符(通配符)模式不同,通配符(通配符)模式需要不加引號才能被這樣對待)。
因此,arguments和在 PowerShell中是等價
*.txt的,并且都被目標命令逐字視為,目標命令必須自己執行通配符模式匹配,視情況而定。'*.txt'"*.txt"*.txt雖然在 POSIX 兼容的 shell(例如 Bash 通配符模式)中,僅限于基于不帶引號的模式匹配檔案和目錄,但PowerShell 的通配符支持(至少在內置 cmdlet 中)是通用的,因此更加通用:
即使在非檔案系統背景關系中,內置 cmdlet 的許多引數也支持通配符模式。
例如,
Select-Object的-Property引數允許通過通配符模式匹配屬性名稱,因此在以下示例中-Property *Time選擇物件輸出的.CreationTime,.LastAccessTime和.LastWritTime屬性:[System.IO.DirectoryInfo]Get-ItemGet-Item $PSHOME | Select-Object -Property *Time
至于你嘗試了什么:
您嘗試的 -使用元字符單獨轉義
`(所謂的反引號,PowerShell 的轉義字符) -應該可以作業。*1`)*應該與 相同'*1)*',即具有逐字內容的字串,并且在目標命令看到它之前*1)*,它的決議由 PowerShell 的引數 binder處理,因此您是否也指定不應該有所作為。-Name如果確實有問題:
Windows PowerShell是遺留的、僅限 Windows 的、附帶 Windows 的版本,其最新和最后一個版本是 v5.1.x,處于僅維護模式,只有嚴重的錯誤才有機會得到解決 - 而這個可能不會沒有資格。
相比之下,它的現代繼任者,即跨平臺、按需安裝的PowerShell (Core)版本得到了積極維護,因此,如果您有使用最新穩定版本或仍在官方維護的版本的可重現案例,我鼓勵您在 GitHub 存盤庫中報告問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523422.html
標籤:电源外壳逃跑球体获取子项
