0

我正在遵循站点上的指南并尝试排除其中包含名称turnkey的数据库。

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `

此命令返回所有数据库名称,如何删除统包名称?

4

2 回答 2

1

您显示的命令是 Linux / unix shell 命令。如果您添加另一个步骤

 grep -v turnkey

您将省略其中包含“交钥匙”一词的任何行。

像这样:

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | 
cut -d'/' -f5 | 
grep -v ^mysql\$ |
grep -v turnkey 
tr \\\r\\\n ,\ `

你没有问这是否是个好主意。我不认为是这样,因为它依赖于 MySQL 服务器守护程序软件的特定磁盘结构,这不是系统正式规范的一部分。换句话说,它可能会改变。

你可以这样做:

SELECT SCHEMA_NAME FROM `information_schema`.`SCHEMATA` 
 WHERE SCHEMA_NAME NOT LIKE '%turnkey%'
 ORDER BY SCHEMA_NAME
于 2012-06-28T18:05:21.767 回答
0

您可以使用一些改进的脚本而无需任何额外的实用程序,只需纯查找:

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d ! \( -name turnkey -or -name mysql \) -printf "%f "

或者只是修改您的变体以添加语句以将其从列表中排除turnkeygrep -v

find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v "^mysql\$\|^turnkey$" | tr \\\r\\\n ,\ `
于 2012-06-28T18:05:19.670 回答