【发布时间】:2013-12-09 13:21:04
【问题描述】:
对于某些包含特定模式的 ddl 文件,我需要完整的路径和文件名。我正在使用命令:find /opt/releases/packages/cr666/sas/dbms -name *.ddl | xargs egrep -i -w "重命名|修改|^DROP TABLE"
如果找到超过 1 个文件,它会返回我需要的内容:
/opt/releases/packages/cr666/sas/dbms/sti/FA_BASKET.ddl:RENAME COLUMN;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;
但是,如果只找到 1 个文件,则只返回找到的行:
find /opt/releases/packages/cr_c_cr6/sas/dbms -name \*.ddl | xargs egrep -i -w "RENAME|MODIFY|^DROP TABLE"
alter table FA_DISCLOSURE MODIFY (ULINSTRUMENTID VARCHAR2(30 CHAR));
我知道如果我使用选项“-l”我会得到我需要的结果,但没有找到的行。有没有办法为第二个命令获得与第一个示例相同的输出?
【问题讨论】:
-
非常感谢。 -H 选项成功了。关于与 exec 的挤压,对不起,但我不喜欢它。压缩代码使其更难阅读和维护。
-
很高兴阅读。由于您是新来的,如果您的问题已经解决,请不要忘记将答案标记为已接受。您可以单击答案旁边的复选标记将其从空心切换为绿色。如有任何疑问,请参阅Help Center > Asking!