我想查找以 _peaks.bed
结尾的文件,但排除 tmp
和 scripts
文件夹中的文件。
我的命令是这样的:
find . -type f \( -name "*_peaks.bed" ! -name "*tmp*" ! -name "*scripts*" \)
但它没有用。 tmp
和 script
文件夹中的文件仍会显示。
有人对此有想法吗?
最佳答案
您可以通过以下方式指定 find
:
find . -type f -name "*_peaks.bed" ! -path "./tmp/*" ! -path "./scripts/*"
说明:
find .
- 从当前工作目录开始查找(默认递归)-type f
- 指定find
你只希望结果中的文件-name "*_peaks.bed"
- 查找名称以_peaks.bed
结尾的文件
! -path "./tmp/*"
- 排除路径以./tmp/
开头的所有结果
! -path "./scripts/*"
- 同时排除路径以./scripts/
开头的所有结果
测试解决方案:
$ mkdir a b c d e
$ touch a/1 b/2 c/3 d/4 e/5 e/a e/b
$ find . -type f ! -path "./a/*" ! -path "./b/*"
./d/4
./c/3
./e/a
./e/b
./e/5
您非常接近,-name
选项仅考虑基本名称,而 -path
考虑整个路径 =)
关于linux - 使用 find 命令但排除两个目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132210/