我正在寻找一种列出UNIX系统上目录内容的方法,该方法没有出现在预定义的“排除”列表中。
说我有一个导演:
dir1
dir1-1
test1
test2
test3
dir1-2
test4
test5
和“排除清单”如下:
dir1/dir1-1/test1
dir1/dir1-2/test5
我对输出感兴趣
dir1/dir1-1/test2
dir1/dir1-1/test3
dir1/dir1-2/test4
实际命令将包含排除列表和包含数千个文件的目录结构,因此性能有点问题。
有什么想法吗?
答案 0 :(得分:1)
您可以使用!
运算符排除它们:
find . -type f ! \( -path "./dir1-1/test1" -o -path "./dir1-2/test5" \)
请注意,我们正在对.
的排除路径进行硬编码。因此,如果您从其他地方执行它,您将需要添加相应的路径。或者,更好的是,使用完整路径,如:
find /your/path/ -type f ! \( -path "/your/path/dir1-1/test1" -o -path "/your/path/dir1-2/test5" \)