wildcard - zsh 删除路径中带有通配符的子目录
问题描述
对于以下目录结构:
└── bar
├── first
│ └── tmp
└── second
└── tmp
我想删除所有tmp
目录。然而,
rm -rf 'bar/*/tmp/'
不删除目录
ls bar/*/
仍然返回两个tmp
目录:
bar/first/:
tmp
bar/second/:
tmp
解决方案
你的问题是单引号
rm -rf 'bar/*/tmp/'
如果你删除它们,你会没事的。
rm -rf bar/*/tmp
这样做的原因是(大多数,如果不是全部)shell 语言中的单引号表示包含的字符串将被完全视为一个字符串,这会忽略您尝试执行的通配符。
推荐阅读
- python - imread() 得到了一个意外的关键字参数“flatten”
- objective-c - Sparkle 与 mac app cocoa 中的安全性集成
- java - String.split() 方法在 Eclipse 氧气版本 4.7.0M2 中不起作用
- php - 如何在表中的数组值上添加超链接?
- mongodb - MongoDB查询以获取特定组的数组值计数
- common-lisp - 如何组织 Common Lisp 源代码,以便在库之间正确解析符号?
- php - 为什么 Google Drive API / Oauth2 刷新令牌请求,返回错误“需要 SSL 才能执行此操作。”?
- r - 尝试安装 dplyr 时 R 的意外行为
- javascript - New Date() 给我错误的年份 - Windows 10 和 VS2015
- sql - 如何在 SQL Server 中运行“CREATE TABLE .. (col AS (select sql))”