Bash 查找没有特定字符串的文件

Bash 查找没有特定字符串的文件,bash,unix,find,Bash,Unix,Find,我使用以下复杂的命令管道查找名称以.xma或.sma结尾的所有文件,然后在其中查找某个字符串并对结果进行排序。这是为了在我的系统上查找特定应用程序的所有文件,以查看我使用了哪些版本(对于升级、迁移非常重要) find-path./Library/Mail-prune-or-path./Documents/Architecture/BiZZdesign_Profiles\ -prune-or-name\*.\[sx\]ma\(-exec grep-H lastSavedWith{})\ -或-ex

我使用以下复杂的命令管道查找名称以.xma或.sma结尾的所有文件,然后在其中查找某个字符串并对结果进行排序。这是为了在我的系统上查找特定应用程序的所有文件,以查看我使用了哪些版本(对于升级、迁移非常重要)

find-path./Library/Mail-prune-or-path./Documents/Architecture/BiZZdesign_Profiles\
-prune-or-name\*.\[sx\]ma\(-exec grep-H lastSavedWith{})\
-或-exec grep-H createdBy{}\;\)|\

sed-E的/([^::]+).*(Architect | Enterprise Studio)?([^因为您使用的是grep,所以可以使用
grep-L
执行一个操作。添加
|grep-v
-v
意味着grep将过滤掉不需要的字符串。不,它将给出一个正匹配(在文档中与该字符串不匹配的所有行上).grep-L是答案。使用-L是可能的,但是必须使用一个包含所有不应该存在的字符串的正则表达式的egrep命令。因为grep将返回OK(0)如果它检查一个文件并且字符串实际存在,即使它没有将文件名放入输出。因此,替代方法是find.-path./Library/Mail-prune-or-path./Documents/Architecture/BiZZdesign_Profiles-prune-或-name*[sx]ma-exec egrep-L-H'(lastSavedWith | createdBy | lastConvertedBy){}\|排序
find . -path ./Library/Mail -prune -or -path ./Documents/Architecture/BiZZdesign_Profiles \
-prune -or -name \*.\[sx\]ma \( -exec grep -H lastSavedWith {} \; \
-or -exec grep -H createdBy {} \; \) |\
sed -E 's/([^:]+).*(Architect|Enterprise Studio) ?([^<]+).*/\2 \3: \1/'|sort