在所有子文件夹上运行命令

xyz*_*xyz 6 command-line directory wildcards files

如果您有一系列子文件夹(例如 from ato z)并且想要对每个子文件夹(例如rm *.pdfls *.pdf)运行命令,您会怎么做?“手动”方法是cd a, rm *.pdf, or ls *.pdf, cd .., cd b, ... 这看起来太复杂了,所以我相信一定有更简单的方法。

Gil*_*not 7

尝试这样做(使用大括号扩展和 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 的解释)