一个Liner Shell脚本,用于查找路径中除特定文件列表之外的所有文件

时间:2015-09-04 11:44:47

标签: regex shell unix sed

所以说我有以下命令:

find text except some files with name [a, b,c...]

我能做的最好的事情是:

`find -E PATH -type f -name “*.*” -and ! -name ".*" -not -path “FILE1”  -and ! -name ".*" -not -path “FILE2”`

但有没有办法可以不重复-and ! -name ".*" -not -path “FILE”,或者我可以在列表中获得FILE1FILE2等方式吗?

道歉,如果这太简单了,我对正则表达式没有任何经验。

2 个答案:

答案 0 :(得分:3)

您可以将find-regex一起使用:

find -E PATH -not -regex '.*/(\..*|FILE1|FILE2|FILE3)'

答案 1 :(得分:1)

根据发现后的需要

find -E PATH -type f -name “*.*” -print | grep -E -v 'FILE1|FILE2'

并列出了大量排除(最佳目的),其中Exclusion.File包含每行的每个排除

find -E PATH -type f -name “*.*” -print | grep -E -v -f Exclusion.File '