我想查找以_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认为整个路径=)

干得好。但是,您忘记了OP想要的一件事,找到以_peaks.bed结尾的文件。

@alex doh,好!固定=)

这在GNU find中使用了许多扩展,但由于问题标记为Linux,这不是问题。好答案。

简短说明:如果在初始查找提示时使用.,则必须在排除的每个路径中使用它。路径匹配非常严格,不进行模糊搜索。所以,如果你使用find / -type f -name *.bed" ! -path"./tmp/"它不会起作用。你需要! -path"/tmp"让它快乐。

重要的是要注意*很重要。 $ ! -path"./directory/*"

非常好的答案谢谢。

我希望我可以三倍支持你的答案!

根据手册页:"要忽略整个目录树,请使用-prune而不是检查树中的每个文件。"如果您排除的目录运行得非常深或者有大量文件并且您关心性能,那么请改用-prune选项。

我正在尝试在此处修改您的解决方案以获取可变排除列表,但没有运气

这是你可以做到的一种方式......

find . -type f -name"*_peaks.bed" | egrep -v"^(./tmp/|./scripts/)"

这具有使用任何版本的find而不是仅使用GNU find的优点。但是,问题是标记为Linux,因此并不重要。

你可以尝试下面:

find ./ ! \( -path ./tmp -prune \) ! \( -path ./scripts -prune \) -type f -name '*_peaks.bed'

在这样一个老问题上(4年!)你想解释为什么这个新答案更好或不同,而不仅仅是"转储"代码。

对我来说,这个解决方案没有用于命令exec和find,不知道为什么,所以我的解决方案是

find . -type f -path"./a/*" -prune -o -path"./b/*" -prune -o -exec gzip -f -v {} \;

说明:与sampson-chen相同,添加了

-prune - 忽略...的程序路径

-o - 然后如果没有匹配打印结果,(修剪目录并打印剩余的结果)

18:12 $ mkdir a b c d e

18:13 $ touch a/1 b/2 c/3 d/4 e/5 e/a e/b

18:13 $ find . -type f -path"./a/*" -prune -o -path"./b/*" -prune -o -exec gzip -f -v {} \;

gzip: . is a directory -- ignored

gzip: ./a is a directory -- ignored

gzip: ./b is a directory -- ignored

gzip: ./c is a directory -- ignored

./c/3:    0.0% -- replaced with ./c/3.gz

gzip: ./d is a directory -- ignored

./d/4:    0.0% -- replaced with ./d/4.gz

gzip: ./e is a directory -- ignored

./e/5:    0.0% -- replaced with ./e/5.gz

./e/a:    0.0% -- replaced with ./e/a.gz

./e/b:    0.0% -- replaced with ./e/b.gz

接受的答案不起作用,但这有效。使用修剪,find . -path ./scripts -prune -name '*_peaks.bed' -type f。不确定如何排除多个目录。即使指定了type,这也会列出顶级排除目录。除非你想使用修剪来加速查找操作,否则通过Grep排除似乎更直接。

我也很难排除多个目录,但上面的评论给了我一个有效的答案。我使用'-not -path'的多个实例,并且在每个路径表达式中,我包括在第一个参数中使用的完整前缀'find',并且每个都用星号结束(并且转义任何点)。

尝试类似的东西

find . \( -type f -name \*_peaks.bed -print \) -or \( -type d -and \( -name tmp -or -name scripts \) -and -prune \)

如果我有点不对,也不要太惊讶。如果目标是exec(而不是print),只需将其替换为原位。

linux 排除多个目录搜索文件,关于linux:使用find命令但排除两个目录中的文件相关推荐

  1. arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?

    IPFS或星际文件系统是一种点对点(P2P)网络协议,用于共享分布式Web上的数据.顾名思义,您可以将IPFS视为文件系统,它具有一些独特的特性,使其成为安全,分散式共享的理想选择. 在这里您可以了解 ...

  2. linux从Mac下载文件,如何将命令的输出保存到Bash中的文件(也称为Linux和macOS终端) | MOS86...

    当您在bash提示符下运行命令时,通常将该命令的输出直接打印到终端,以便您立即读取.但是bash也允许你 这可以在任何操作系统的bash中运行,从Linux和macOS到Windows 10 选项On ...

  3. 服务器免密码传输文件,CentOS7,使用 scp 命令, ssh 连接方式,免密码传输文件到远程服务器,免密执行远程服务器上的 shell 脚本...

    如题 如果提示:-bash: scp: command not found, 执行下面的命令安装:1 yum install -y openssh-clients 免密码配置通常用 scp 命令通过 ...

  4. vb在服务器上新建文件夹,vb.net-如果不存在,如何在VB中创建文件夹?

    vb.net-如果不存在,如何在VB中创建文件夹? 我为自己编写了一个小小的下载应用程序,以便我可以轻松地从服务器上获取一组文件,然后将它们全部放入带有全新安装的Windows的新PC上,而无需实际运 ...

  5. python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 .文件有有什么用 文件可以看作一个仓库, ...

  6. python中打开文件时只允许写入的模式是_详解python中各种文件打开模式

    在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...

  7. oracle模板数据文件,Oracle EBS如何通过命令上传XML/BI Publisher数据定义文件和模板文件...

    EBS如何通过命令上传XML/BI Publisher数据定义文件和模板文件 以apdxxx1i用户登录系统,执行如下命令: (如果db和ap部署在不同节点,jdbc连接需要使用db节点的主机名) 导 ...

  8. Linux命令行下载OneDrive分享链接中的文件

    我所知的某个游戏分享站喜欢用OneDrive来分享游戏,用OneDrive很好,抵制百度网盘我强烈支持,但是OneDrive国内有时候抽风比较厉害,而在国外OneDrive下载几乎能跑满带宽,我G口的 ...

  9. ccs读取dat文件c语言程序,TMS320DM642学习----第六篇(CCS中.dat文件类型详解)

    1.如下为.dat文件中文件头的基本格式: MagicNumber Format StartingAddress PageNum Length [NewFormat] 下面是分别的解释: MagicN ...

  10. servlet文件上传blob_servlet实现从oracle数据库的blob字段中读出文件并显示 | 学步园...

    /* * ReadFile.java * * Created on 2004年11月17日, 下午3:41 */ package jgwl.app; import java.io.*; import ...

最新文章

  1. Postman增删改查接口测试
  2. 使apk具有system权限
  3. 【opencv】经典的细化提取骨架理论及源代码
  4. c语言中数组名a和a详细介绍
  5. 【机器学习】主元分析(PCA)以及与SVD的区别联系
  6. linux配置防火墙,开启端口
  7. shell脚本的学习(二)
  8. 吐槽 git 的一些愚蠢的接口设计: add/delete/remove/rm 选项随心所欲, 缺乏一致性
  9. HID Global推出全新室内定位服务 助力企业优化配置劳动力
  10. Scrapy爬取多层级网页内容的方式
  11. 计算机图形学期刊影响因子,计算机图形学 | CCF推荐期刊专刊信息2条
  12. ArcGIS发布地图服务--ArcMap
  13. linux性能监控命令dstat详解【杭州多测师_王sir】【杭州多测师】
  14. Python数据分析与机器学习-Python库分析科比生涯数据
  15. EXCEL中所有函数的使用
  16. 从零学Java(10)之方法详解,喷打野你真的没我6!
  17. 武汉有哪些牛逼的互联网公司?
  18. FBI教你破解身体语言
  19. 京东云,走进产业数字化深处
  20. python输出一首诗_基于循环神经网络(RNN)的古诗生成器

热门文章

  1. 小程序如何生成二维码海报?
  2. 大写金额换算器iOS版源代码
  3. Matplotlib绘制3D图(面向对象)
  4. CVE(2017-15715、2021-41773、2021-40438)漏洞复现
  5. HCIP(华为高级网络安全工程师)(实验五)(OSPF综合实验)
  6. 建行与爱赏合作推出建行爱赏卡 刷卡消费“抢红包”
  7. 通过Visual Studio 2019搭建DirectX 12开发环境
  8. 大一新生HTML期末作业,网页制作作业——明星介绍易烊千玺网站HTML+CSS
  9. Nginx✧虚拟主机资源静态化
  10. iOS越狱并安装ssl kill switch解除ssl pining,抓取https包