请考虑我在名为test
的文件夹中有许多shell脚本。我想执行除了一个特定文件以外的所有文件。我该怎么办?重新定位文件或手动执行文件不是一种选择。有没有什么办法可以在单线上做到这一点。或者,可以添加一些sh path/to/test/*.sh
,它执行所有文件?命令行:使用通配符时忽略特定文件
回答
for file in test/*; do
[ "$file" != "test/do-not-run.sh" ] && sh "$file"
done
如果您正在使用bash
,您可以使用扩展模式,以跳过不需要的脚本:
shopt -s extglob
for file in test/!(do-not-run).sh; do
sh "$file"
done
+1用于extglob-usage :-) – plundra
for FILE in `ls "$YOURPATH"` ; do
test "$FILE" != "do-not-run.sh" && sh "$YOURPATH/$FILE";
done
如果有任何包含空格的路径,解析'ls'的输出将会失败。 – chepner
find path/to/test -name "*.sh" \! -name $pattern_for_unwanted_scripts -exec {} \;
查找将递归执行中到底该目录中的所有条目在.sh(-name“* .sh”)并且不匹配不需要的模式(\!-name $ pattern_for_unwanted_scripts)。
在bash
,只要你做shopt -s extglob
您可以使用“扩展通配符”,允许使用哪些匹配除了给定的模式之一什么!(pattern-list)
。
你的情况:
shopt -s extglob
for f in !(do-not-run.sh); do if [ "${f##*.}" == "sh" ]; then sh $f; fi; done
这将匹配不是“do-not-run.sh”的每个文件。 – chepner
是的你是对的,在'.sh后缀'上加了测试 –
或者,把扩展名移出负模式:'!(不要运行).sh'匹配所有的“* .sh”文件,除了“do -not-run.sh” –
- 1. 批处理命令忽略dir命令后的特定文件?
- 2. 使用latexpdf忽略命令行设置
- 3. Git忽略特定文件
- 4. 忽略文件中的特定行
- 5. 调试时忽略特定文件
- 6. 通过命令提示符运行特定的测试文件
- 7. Rar命令 - 忽略某些文件夹
- 8. 使用diff命令,忽略行末的字符
- 9. Mercurial - 用户特定的忽略文件
- 10. 忽略特定通知
- 11. 使用Git过滤器忽略JSON文件中的特定行
- 12. 使用bower-installer时忽略特定主文件
- 13. 如何使用`zip`命令压缩文件时忽略.DS_Store文件?
- 14. 通过命令行导入到MySQL时忽略列数据
- 15. Solr,忽略特定字段的通配符查询
- 16. 命令在批处理文件蚂蚁命令后忽略
- 17. 击命令行重命名通配符
- 18. 通过匹配文本忽略特定的JS错误
- 19. 忽略临时文件时使用Ghostscript
- 20. 通配符点星忽略分隔符
- 21. ]命令和命令> [忽略输出]
- 22. TortoiseGit的“清理”会忽略文件夹,命令行不会
- 23. Windows批处理命令忽略一些文件行?
- 24. Bash:使用文件名作为通配符的命令
- 25. 批处理文件中的Set命令中使用通配符
- 26. 使用以空格的文件名的Makefile通配符命令
- 27. 在连接命令中忽略头文件(过时的coreutils)
- 28. 使用补丁命令忽略标题不匹配拒绝
- 29. 使用通配符导入符号,但重命名或忽略其中一些
- 30. 自定义命令忽略热键
你的意思是我想包括除一人外的所有文件? –