我正在关注this网站上的指南,并尝试排除名称为turnkey
的数据库。
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `
此命令返回所有数据库名称,如何删除交钥匙名称?
答案 0 :(得分:1)
您显示的命令是Linux / unix shell命令。如果你添加另一个步骤
grep -v turnkey
你将省略任何带有“turnkey”字样的行。
像这样:
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d |
cut -d'/' -f5 |
grep -v ^mysql\$ |
grep -v turnkey
tr \\\r\\\n ,\ `
你没有问这是不是一个好主意。我认为不是这样,因为它依赖于MySQL服务器守护程序软件的特定ondisk结构,而不是系统正式规范的一部分。换句话说,它可能会改变。
你可以这样做:
SELECT SCHEMA_NAME FROM `information_schema`.`SCHEMATA`
WHERE SCHEMA_NAME NOT LIKE '%turnkey%'
ORDER BY SCHEMA_NAME
答案 1 :(得分:0)
您可以使用一些改进的脚本而无需任何其他实用程序,只需使用纯查找:
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d ! \( -name turnkey -or -name mysql \) -printf "%f "
或者只需修改您的变体,在turnkey
语句中添加grep -v
即可将其从列表中排除:
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v "^mysql\$\|^turnkey$" | tr \\\r\\\n ,\ `