linux 排除多个目录搜索文件,关于linux:使用find命令但排除两个目录中的文件
我想查找以_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命令但排除两个目录中的文件相关推荐
- arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?
IPFS或星际文件系统是一种点对点(P2P)网络协议,用于共享分布式Web上的数据.顾名思义,您可以将IPFS视为文件系统,它具有一些独特的特性,使其成为安全,分散式共享的理想选择. 在这里您可以了解 ...
- linux从Mac下载文件,如何将命令的输出保存到Bash中的文件(也称为Linux和macOS终端) | MOS86...
当您在bash提示符下运行命令时,通常将该命令的输出直接打印到终端,以便您立即读取.但是bash也允许你 这可以在任何操作系统的bash中运行,从Linux和macOS到Windows 10 选项On ...
- 服务器免密码传输文件,CentOS7,使用 scp 命令, ssh 连接方式,免密码传输文件到远程服务器,免密执行远程服务器上的 shell 脚本...
如题 如果提示:-bash: scp: command not found, 执行下面的命令安装:1 yum install -y openssh-clients 免密码配置通常用 scp 命令通过 ...
- vb在服务器上新建文件夹,vb.net-如果不存在,如何在VB中创建文件夹?
vb.net-如果不存在,如何在VB中创建文件夹? 我为自己编写了一个小小的下载应用程序,以便我可以轻松地从服务器上获取一组文件,然后将它们全部放入带有全新安装的Windows的新PC上,而无需实际运 ...
- python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...
前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 .文件有有什么用 文件可以看作一个仓库, ...
- python中打开文件时只允许写入的模式是_详解python中各种文件打开模式
在python中,总的来说有三种大的模式打开文件,分别是:a, w, r 当以a模式打开时,只能写文件,而且是在文件末尾添加内容. 当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发 ...
- oracle模板数据文件,Oracle EBS如何通过命令上传XML/BI Publisher数据定义文件和模板文件...
EBS如何通过命令上传XML/BI Publisher数据定义文件和模板文件 以apdxxx1i用户登录系统,执行如下命令: (如果db和ap部署在不同节点,jdbc连接需要使用db节点的主机名) 导 ...
- Linux命令行下载OneDrive分享链接中的文件
我所知的某个游戏分享站喜欢用OneDrive来分享游戏,用OneDrive很好,抵制百度网盘我强烈支持,但是OneDrive国内有时候抽风比较厉害,而在国外OneDrive下载几乎能跑满带宽,我G口的 ...
- ccs读取dat文件c语言程序,TMS320DM642学习----第六篇(CCS中.dat文件类型详解)
1.如下为.dat文件中文件头的基本格式: MagicNumber Format StartingAddress PageNum Length [NewFormat] 下面是分别的解释: MagicN ...
- servlet文件上传blob_servlet实现从oracle数据库的blob字段中读出文件并显示 | 学步园...
/* * ReadFile.java * * Created on 2004年11月17日, 下午3:41 */ package jgwl.app; import java.io.*; import ...
最新文章
- Postman增删改查接口测试
- 使apk具有system权限
- 【opencv】经典的细化提取骨架理论及源代码
- c语言中数组名a和a详细介绍
- 【机器学习】主元分析(PCA)以及与SVD的区别联系
- linux配置防火墙,开启端口
- shell脚本的学习(二)
- 吐槽 git 的一些愚蠢的接口设计: add/delete/remove/rm 选项随心所欲, 缺乏一致性
- HID Global推出全新室内定位服务 助力企业优化配置劳动力
- Scrapy爬取多层级网页内容的方式
- 计算机图形学期刊影响因子,计算机图形学 | CCF推荐期刊专刊信息2条
- ArcGIS发布地图服务--ArcMap
- linux性能监控命令dstat详解【杭州多测师_王sir】【杭州多测师】
- Python数据分析与机器学习-Python库分析科比生涯数据
- EXCEL中所有函数的使用
- 从零学Java(10)之方法详解,喷打野你真的没我6!
- 武汉有哪些牛逼的互联网公司?
- FBI教你破解身体语言
- 京东云,走进产业数字化深处
- python输出一首诗_基于循环神经网络(RNN)的古诗生成器
热门文章
- 小程序如何生成二维码海报?
- 大写金额换算器iOS版源代码
- Matplotlib绘制3D图(面向对象)
- CVE(2017-15715、2021-41773、2021-40438)漏洞复现
- HCIP(华为高级网络安全工程师)(实验五)(OSPF综合实验)
- 建行与爱赏合作推出建行爱赏卡 刷卡消费“抢红包”
- 通过Visual Studio 2019搭建DirectX 12开发环境
- 大一新生HTML期末作业,网页制作作业——明星介绍易烊千玺网站HTML+CSS
- Nginx✧虚拟主机资源静态化
- iOS越狱并安装ssl kill switch解除ssl pining,抓取https包