xyz*_*xyz 6 command-line directory wildcards files
如果您有一系列子文件夹(例如 from ato z)并且想要对每个子文件夹(例如rm *.pdf或ls *.pdf)运行命令,您会怎么做?“手动”方法是cd a, rm *.pdf, or ls *.pdf, cd .., cd b, ... 这看起来太复杂了,所以我相信一定有更简单的方法。
尝试这样做(使用bash、大括号扩展和 globs):
rm -f {a..z}/*.pdf
Run Code Online (Sandbox Code Playgroud)
或者
rm -f [a-z]/*.pdf
Run Code Online (Sandbox Code Playgroud)
如果您的外壳缺少大括号扩展功能。
与[a-z], {a..z}(ksh93 也支持)相反glob,它不是 a ,它是大括号扩展,globs无论文件是否存在,它都会扩展(之前)。这就像rm -f a/*.pdf b/*.pdf...,无论a,b...是否存在。另请注意,与[a-z]范围可能依赖于区域设置的地方相反(例如可能包括é, ?...),{a..z}仅适用于字节范围(并且可靠地仅适用于ASCII字母范围和数字范围)
(谢谢 Stephane Chazelas 的解释)