在通配符中使用范围运算符(Using the Range Operator in Wildcard Queries)
2007-09-25 17:05
621 查看
[align=left]如下翻译来自微软TechNet脚本中心: [/align]
[align=left]http://www.microsoft.com/technet/scriptcenter/resources/pstips/jul07/pstip0706.mspx[/align]
译者: Edengundam(马涛)
在通配符中使用范围运算符(Using the Range Operator in Wildcard Queries)
在Windows PowerShell中, 你不会对像Get-ChildItem (一个基本等价于dir命令的cmdlet) cmdlet在执行查询时, 允许你使用像星号(*)和问好(?)的标准通配符感到惊讶. 例如, 假设你希望查看C:/Scripts目录下的所有以字符 a 开头的文件. 没问题; 只需要将星号作为你命令的一部分即可:
这个例子没啥值得兴奋或: 在Windows PowerShell (和Cmd.exe中的星号一样)星号表示“任意个的字符,” 恩, 这个命http://www.microsoft.com/technet/scriptcenter/resources/pstips/jul07/pstip0706.mspx令返回所有文件名以字母a开头的后面跟着任意个字符的文件. (从本质上讲, 星号还表示空串: 文件名为A没有文件扩展名的文件也会被这个命令返回.)
同样的, 你可以使用问号表示文件名中的一个字符. 例如, 假设你有一些文件命名为FileA1.txt, FileA2.txt, FileA3.txt, 等等. (这个例子中, 一直包含到FileA9.txt文件). 你如何在一个命令中返回这些文件呢? 类似这样:
或者结合通配符, 在不考虑文件扩展名情况下, 返回所有的“FileA”文件:
真是太棒了! 这里还有些更棒的工具. 假设你需要列出所有以字母 A-F开头的文件. 在Cmd.exe你如何完成它呢? 实话实说, 我们不会. 但是, 你可以在Windows PowerShell执行下面的命令来完成这个任务:
正如你所见到, 这里我们使用了范围运算符 – [a-f] – 这个运算符要求PowerShell返回那些以指定字符开头的文件名: a到f. 通过在末尾添加星号, 我们进一步说明我们不关心跟随在第一个字符后面的其他字符(如果该文件名长度大于1). 当执行这个命令时, 我们将会得到什么样结果呢? 接过类似下面这样:
很棒吧? 只关心那些以 c 到 f的文件? 这并没有什么问题; 只需要适当的设置范围运算符即可:
这个运算符对数字也一样适用. 需要一个以数字而不是字母开头的文件列表嘛? 没问题(译注: Okey-doke这个就是OK的意思):
当然了对于你关心一个范围的字符时, 这些例子做的很好了. 但是如果你只是对一个特定集合的字母感兴趣, 这些字母无法构成连续的范围呢? (例如, 以字母b, 字母d或字母f开头的文件.) 没问题; 你只需要将这些字母放在范围运算符中即可. 只要不指定连字符, PowerShell就知道将这些字母当作独立的字母而不是字幕范围来处理:
它能不能做到啊? 它当然能啦:
如果这样还不够, 你可以在你命令的任意位置使用范围运算符; 它不一定只用来表示第一个字符. 例如, 假设你需要列出第二个字母是 l, n, 或者r的文件. (我们并不知道你为什么需要这个列表; 假装你想要吧.) 这个使用问号表示文件名中第一个字母, 范围运算符表示第二个字母, 星号表示其余的字母的命令有点神奇:
这里你将看到期待的输出结果:
不错, 很不错.
[align=left]http://www.microsoft.com/technet/scriptcenter/resources/pstips/jul07/pstip0706.mspx[/align]
译者: Edengundam(马涛)
在通配符中使用范围运算符(Using the Range Operator in Wildcard Queries)
在Windows PowerShell中, 你不会对像Get-ChildItem (一个基本等价于dir命令的cmdlet) cmdlet在执行查询时, 允许你使用像星号(*)和问好(?)的标准通配符感到惊讶. 例如, 假设你希望查看C:/Scripts目录下的所有以字符 a 开头的文件. 没问题; 只需要将星号作为你命令的一部分即可:
Get-ChildItem C:/Scripts/a*
这个例子没啥值得兴奋或: 在Windows PowerShell (和Cmd.exe中的星号一样)星号表示“任意个的字符,” 恩, 这个命http://www.microsoft.com/technet/scriptcenter/resources/pstips/jul07/pstip0706.mspx令返回所有文件名以字母a开头的后面跟着任意个字符的文件. (从本质上讲, 星号还表示空串: 文件名为A没有文件扩展名的文件也会被这个命令返回.)
同样的, 你可以使用问号表示文件名中的一个字符. 例如, 假设你有一些文件命名为FileA1.txt, FileA2.txt, FileA3.txt, 等等. (这个例子中, 一直包含到FileA9.txt文件). 你如何在一个命令中返回这些文件呢? 类似这样:
Get-ChildItem C:/Scripts/FileA?.txt
或者结合通配符, 在不考虑文件扩展名情况下, 返回所有的“FileA”文件:
Get-ChildItem C:/Scripts/FileA?.*
真是太棒了! 这里还有些更棒的工具. 假设你需要列出所有以字母 A-F开头的文件. 在Cmd.exe你如何完成它呢? 实话实说, 我们不会. 但是, 你可以在Windows PowerShell执行下面的命令来完成这个任务:
Get-ChildItem C:/Scripts/[a-f]*
正如你所见到, 这里我们使用了范围运算符 – [a-f] – 这个运算符要求PowerShell返回那些以指定字符开头的文件名: a到f. 通过在末尾添加星号, 我们进一步说明我们不关心跟随在第一个字符后面的其他字符(如果该文件名长度大于1). 当执行这个命令时, 我们将会得到什么样结果呢? 接过类似下面这样:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/23/2007 9:52 AM 93 addresses.txt
-a--- 11/17/2006 2:52 PM 708 alice.txt
-a--- 2/26/2007 10:44 AM 732 Alice2.txt
-a--- 3/12/2007 8:08 AM 88 bullet.gif
-a--- 6/15/2007 8:07 AM 1060 ccs.csv
-a--- 5/14/2007 8:41 AM 8 computers.txt
-a--- 5/23/2007 10:36 AM 114 current.txt
-a--- 2/22/2007 12:56 AM 730 decode.txt
-a--- 2/26/2007 10:33 AM 732 Decoded.txt
-a--- 2/22/2007 1:06 AM 728 Decrypt.txt
-a--- 5/23/2007 10:36 AM 59 Differences.txt
-a--- 7/3/2007 10:38 AM 5781 drawing.TXT
-a--- 7/3/2007 10:47 AM 17920 drawing.xls
-a--- 4/3/2007 8:29 AM 13824 Employees.xls
-a--- 2/22/2007 12:44 AM 2916 encode.txt
-a--- 2/26/2007 10:44 AM 732 Encoded.txt
-a--- 2/21/2007 12:24 AM 732 EncodedAlice.txt
-a--- 2/22/2007 1:06 AM 2852 Encrypt.txt
-a--- 2/21/2007 12:10 AM 1458 Encrypted.txt
-a--- 5/24/2007 10:08 AM 408 erase.vbs
-a--- 10/9/2006 8:30 PM 649 fv.ps1
很棒吧? 只关心那些以 c 到 f的文件? 这并没有什么问题; 只需要适当的设置范围运算符即可:
Get-ChildItem C:/Scripts/[c-f]*
这个运算符对数字也一样适用. 需要一个以数字而不是字母开头的文件列表嘛? 没问题(译注: Okey-doke这个就是OK的意思):
Get-ChildItem C:/Scripts/[0-9]*
当然了对于你关心一个范围的字符时, 这些例子做的很好了. 但是如果你只是对一个特定集合的字母感兴趣, 这些字母无法构成连续的范围呢? (例如, 以字母b, 字母d或字母f开头的文件.) 没问题; 你只需要将这些字母放在范围运算符中即可. 只要不指定连字符, PowerShell就知道将这些字母当作独立的字母而不是字幕范围来处理:
Get-ChildItem C:/Scripts/[bdf]*
它能不能做到啊? 它当然能啦:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 3/12/2007 8:08 AM 88 bullet.gif
-a--- 2/22/2007 12:56 AM 730 decode.txt
-a--- 2/26/2007 10:33 AM 732 Decoded.txt
-a--- 2/22/2007 1:06 AM 728 Decrypt.txt
-a--- 5/23/2007 10:36 AM 59 Differences.txt
-a--- 7/3/2007 10:38 AM 5781 drawing.TXT
-a--- 7/3/2007 10:47 AM 17920 drawing.xls
-a--- 10/9/2006 8:30 PM 649 fv.ps1
如果这样还不够, 你可以在你命令的任意位置使用范围运算符; 它不一定只用来表示第一个字符. 例如, 假设你需要列出第二个字母是 l, n, 或者r的文件. (我们并不知道你为什么需要这个列表; 假装你想要吧.) 这个使用问号表示文件名中第一个字母, 范围运算符表示第二个字母, 星号表示其余的字母的命令有点神奇:
Get-ChildItem C:/Scripts/?[lnr]*
这里你将看到期待的输出结果:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/17/2006 2:52 PM 708 alice.txt
-a--- 2/26/2007 10:44 AM 732 Alice2.txt
-a--- 7/3/2007 10:38 AM 5781 drawing.TXT
-a--- 7/3/2007 10:47 AM 17920 drawing.xls
-a--- 2/22/2007 12:44 AM 2916 encode.txt
-a--- 2/26/2007 10:44 AM 732 Encoded.txt
-a--- 2/21/2007 12:24 AM 732 EncodedAlice.txt
-a--- 2/22/2007 1:06 AM 2852 Encrypt.txt
-a--- 2/21/2007 12:10 AM 1458 Encrypted.txt
-a--- 5/24/2007 10:08 AM 408 erase.vbs
-a--- 5/24/2007 10:07 AM 850 WriteToCD.vbs
不错, 很不错.
相关文章推荐
- The Java™ Tutorials — Generics :Guidelines for Wildcard Use 通配符使用指南
- Using Theme in an Application--在应用中使用主题(Symbian)
- 使用RecyclerView CardView相关问题 解决The hierarchy of the type is inconsistent问题
- 使用cocapods报错 [!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes
- Using the CASE Expression in SQL Queries @ JDJ
- detects edges in an image using the homogeneity operator
- The Java™ Tutorials — Generics :Wildcard Capture and Helper Methods 通配符匹配和辅助方法
- 创建和使用范围(Creating and Using Ranges)CFString in Core Foundation
- 使用apt导入时报警告:Warning:Using incompatible plugins for the annotation processing: android-apt. This may result in an unexpected behavior.
- 【MySQL笔记】解除输入的安全模式,Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.
- Head Pose Estimation in the Wild using Approximate View Manifolds [2015]
- 在响应链中使用视图控制器Using View Controllers in the Responder Chain[苹果官方文档的翻译]
- Centos下_MysqL5.7在使用mysqldump命令备份数据库报错:mysqldump: [Warning] Using a password on the command line interface can be insecure.
- 转载:Using PowerShell in the build process 使用Powershell进行build
- Using wildCard In Structure Query Language
- swift3 截取字符串(substringwithrange)报错,it will be removed in Swift 3. Use the '..<' operator.
- 状态模式在领域驱动设计中的使用(Using the State pattern in a Domain Driven Design)
- Matlab使用技巧:Rapid Code Iteration Using Cells in the Editor
- 使用VS进行工作流开发系列博客1-"So You Want to Develop Custom Workflows in Visual Studio..." - The Blog Series
- Regular Expression Matching in the Wild(中文)