我正在遵循此站点上的指南并尝试排除其中包含名称turnkey
的数据库。
find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `
此命令返回所有数据库名称,如何删除统包名称?
您显示的命令是 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
您可以使用一些改进的脚本而无需任何额外的实用程序,只需纯查找:
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 ,\ `