Linux 如何在文件中搜索多行模式?

我需要找到所有包含特定字符串模式的文件。想到的第一个解决方案是使用带有xargs grep的find piped: 但是如果我需要找到跨越多行的模式,我会被卡住,因为香草grep找不到多行模式。所以我发现了哪个代表与Perl兼容的正则表达式grep 例如,您需要查找“\u name”变量后跟“\u description”变量的文件: find . -iname '*.py' | xargs pcregrep -M '_name.*\n.*_description' 提示:您需要在图案中包含换

用户空间Linux中的硬件识别

我希望能够用C检查我的Linux机器硬件。 如何获取C中dmesg中显示的信息? 例如,对于键盘,消息是输入的:在转换后的SET2键盘上为/devices/platform/i8042/serio0/input/input0 我想在我的程序中得到转换集2处的标签和路径/devices/platform/i8042/serio0/input/input0。 你知道怎么做吗 amit使用klogctl调用 最好是自己阅读源代码,可以在这里下载:您还可以在/proc中查看文件的内容 /proc/ver

Linux 使用Bash按列分割命令的输出?

我想这样做: 运行命令 捕获输出 选一行 选择该行的一列 举个例子,假设我想从$PID获取命令名(请注意,这只是一个例子,我并不是说这是从进程id获取命令名的最简单方法-我真正的问题是另一个命令的输出格式我无法控制) 如果我运行ps我会得到: PID TTY TIME CMD 11383 pts/1 00:00:00 bash 11771 pts/1 00:00:00 ps 现在我做了ps | egrep 11383并得到 11383 pts/1 00

为什么在x86 Linux中elf可执行文件的对齐地址处加载函数?

我一直在研究x86上的Linux elf可执行文件,主要使用IDA,但 还有gdb。我注意到的一件事是函数总是被加载的 在单词对齐的地址?有人知道原因吗? 我不知道启动x86指令的任何要求 在对齐的地址。而且它不能是由于页面对齐原因造成的 页面边界仍然可以位于函数中的任何位置 如果有任何见解,我将不胜感激 谢谢。对于某些体系结构,数据的对齐方式决定了每个操作可以复制的数据量。例如,尝试从地址0x4000复制32位可能需要一个32位移动操作,而从0x4001复制32位可能需要4个8位移动操作。此外

Linux 使用post-commit钩子有问题

我正在关注这一点,这就像是提交后的hello world 我正在使用Ubuntu 10.04。我安装了svnnotify并运行了$哪个svnnotify哪个输出: /usr/bin/svnnotify 因此,我将Turrial中的路径从/usr/local/bin/svnnotify更改为/usr/bin/svnnotify 我还试着换了一行:#/bin/sh至#/bin/bash因为bash是ubuntu 10.04中的登录shell 我尝试以教程最初的方式运行它,进行了更改,并将两者结合起来

Linux 是否对每秒10000个客户机的问题的解决方案进行了现代审查

(通常称为C10K问题) 对于这个问题的解决方案,是否有更现代的评论(最近更新:2006年9月2日),特别关注Linux(epoll、signalfd、eventfd、timerfd…)和libev或libevent之类的库 讨论现代Linux服务器上所有已解决和尚未解决的问题的内容?巧合的是,就在几天前,编程Reddit或Hacker News提到了这篇文章: 在Java的早期,我的C编程朋友嘲笑我用阻塞线程进行socket IO;当时,别无选择。如今,拥有丰富的内存和处理器,这似乎是一个可

Linux ubuntu 9.10服务器版上的启动脚本总是崩溃

我为Ubuntu9.10 server edition编写了一个启动脚本,它在启动时启动,并对路径中指定的目录进行rsync,我以旧的方式启动,从init.d链接脚本并将其置于运行级别,它正在工作,所以我可以在启动时启动它,但过了一段时间,我的脚本的服务没有运行。5分钟后,当系统启动时,它会在中间崩溃,脚本中的代码只是一行rsync,我确信这不是问题所在,因此我必须再次调用脚本来启动It服务?这有什么问题?有人能帮忙吗?我没有足够的信息来解决您的问题,但我建议您将rsync的stderr导入日志

Linux 动态Bash脚本(即top)

我想知道是否有一种方法可以让bash脚本向控制台显示数据并持续更新它。与top的功能非常相似,但形式更简单。watch-n1 watch -n 1 <your-command> 从手册页: 定期执行程序,全屏显示输出 你需要用诅咒来达到这个目的。这里有一篇关于的详细文章。您可以使用“while true/clear”-循环不断更新屏幕,如: #!/bin/bash while true do clear echo "your output" uptime sleep 5 done

Linux 如何在子目录中找到最大的文件?

用下面的命令我可以找到最大的目录 find <directory> -printf '%s %p\n' |sort -nr | head find-printf“%s%p\n”排序-nr头 但是有没有办法在目录中的所有子目录中找到最大的文件?为文件指定-type f: find -type f -printf '%s %p\n' |sort -nr | head 使用刚才发出的命令,您将获得最大的文件。如果要递归地汇总目录中每个文件的大小,可能需要使用'du'命令 du-xak

Linux 带有CGI的Shell脚本可以很好地用于bash,但不能用于sh

我发现了以下使用bash的CGI工作示例。如果我把前两行改成 #!/bin/sh echo "Content-type: text/html\n\n" 随着脚本停止工作,当我在浏览器中浏览脚本时,脚本底部声明的“foo”、“bar”和“foobar”将消失 你知道我怎样才能让同一个例子与sh一起工作吗?实际上,我需要在一个嵌入式设备上运行这样一个例子,我没有bash,只有sh #!/bin/bash echo -e "Content-type: text/html\n\n" echo " &l

Linux 创建一个basic.bashrc文件

我没有.bashrc文件,我想创建一个,但如何创建?基本.bashrc文件包含什么?我在Linux Mint 12上 我想要一个.bashrc文件,因为我已经为virtualenv创建了一个文件夹,我想加载virtualenvwraper如果你不知道放什么进去,为什么要一个呢?如果您确实希望在每个shell(或登录shell)中执行某些操作,则只需要.bashrc(或.profile或.bash\u profile) 但是您基本上可以将任何bash命令放在这些文件中。A。bashrc文件包含您在

Linux 在CentOS中设置SVN服务器

我正在尝试在Linux(CentOS)服务器上设置SVN存储库 我安装了svn,为svn创建了一个组并添加了用户。 我还授予该组权限 但是,我无法从服务器外部结账(即在使用Ortoise的windows机器上)。我不断得到: Unable to connect to a repository at URL 'svn+ssh://user@xxx.xxx.xxx.xxx/project' Network connection closed unexpectedly 但是,如果我使用相同的用户名/

不在LINUX中的regex()和regcmp()函数

我正在将pro*c代码从UNIX移植到LINUX。在其中一个应用程序代码中,调用了regex()和regcmp()函数。这些函数在LINUX中找不到。LINUX中也有regexec()和recomp()函数,但它们与regex()和recmp()不同。这方面有什么帮助吗?标准C库提供了regcomp和regexec,这可能正是您需要的。请参阅regex手册页(键入man3 regex) 还有其他更具特色的正则表达式实现,例如(可能已经在您的系统上可用) linux中没有库。是否有可以安装libg

Linux 事件按钮是作为模块还是作为用户程序?

我正在编程一个按钮,以便在基于linux的板上启动软件。 基于Linux的嵌入式板上的按钮。GPIO不能与Linux内核一起工作,所以我使用了事件接口。按钮基本上是监听按钮按下以激活所有硬件,并在按下两次时停止硬件。我想知道是作为内核模块还是作为用户程序编写?或者作为执事?如果可以在用户空间(即守护进程)中执行,您应该在那里执行 在这种情况下,两者都可能是必需的。您需要以某种方式访问按钮,这取决于硬件的外观。然后,您需要响应一个事件,并在此基础上执行一个操作 遵循“策略不属于内核”的咒语,这意味

Linux rasm和NDISSM

我刚刚尝试使用disasm反汇编一些外壳代码,在反汇编中发现了以下语句 00000005 0000添加[bx+si],al 由于该指令在这种情况下没有特别的意义,我尝试使用rasm如下:- rasm-d“0000”的输出是add[eax],al。我很好奇为什么会发生这种情况。显然,rasm采用32位模式,而NDISSM不采用 echo -ne "\x00\x00" | ndisasm -b 32 - 应给出与rasm相同的结果

Linux 检查是否已设置环境变量

我正在编写一个shell脚本,其中我必须检查环境变量是否已设置,如果未设置,则必须设置它。是否有任何方法可以检入shell脚本,无论是否已经设置了环境变量 if [ -z "$VARIABLE" ]; then VARIABLE=... fi 这将检查$VARIABLE的长度是否为零 [ -z "$VARIABLE" ] && VARIABLE="abc" if env | grep -q ^VARIABLE= then echo env variable is

Linux 同一程序在不同控制台中的行为不同 我写了一个文本模式批处理C++程序,因为今天给我带来了一些麻烦。p> 可执行文件工作正常,没有更改 环境没有改变;甚至连重启都没有 当我从某个控制台启动程序时,一切正常 当我从一个新控制台启动程序时,一切仍然正常,但即使执行完成,我也只得到日志文件的前两行。 传递给可执行文件的参数是相同的 可执行文件不会以任何方式与控制台交互 这两个控制台的环境变量是相同的 当以root用户身份从远程计算机运行时,一切正常,日志文件完整 当从另一个会话与我的用户再次登录时,一切又恢复正常 当再次注销和登录时,一切又恢复正常

那么,从某个瞬间开始,新的控制台出现了一些问题,这会导致这个问题吗 这可能是我的Linux安装的问题吗 或者,更现实地说,问题是否取决于我的程序 谢谢大家! 环境: -Linux OpenSuse 11.4 -gcc 4.5.1这里是另一个可以放入调试工具箱的工具 尝试“重置”命令——阅读手册页了解详细信息 简而言之,它将控制台重置为已知状态。它是。。。日志文件可能包含试图与tty交互的控制字符,从而导致难以跟踪的问题 您可能还需要查看命令“script”,它将所有控制台活动捕获到at et文件

确定linux端口在硬件中是否支持cmpxchg

我正在编写一个Linux内核补丁,它使用cmpxchg除了修复一些语义问题外,还可以加速一些情况,但是我注意到某些架构只支持xchg而不支持cmpxchg,如何在编译时确定编译内核的体系结构是否在硬件上支持cmpxchg?关于\ifdef\uuuuuuuuuu ARCH\uCMPXCHG?这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。@stealthyninja-hmm?据我看来,这正是答案。它以问号结尾是一个风格问题@曾经有一段时间,旗帜评论更具创造性。现在我所看到的

linux:灵活的缓冲命令?

是否有可用的命令可以将传入流缓冲指定的字节计数或时间段?乙二醇 wget -O - http://video.com/myvid.mp4 | mybuffer -t 5s | myvidplayer 使用--buffer size选项,尝试执行pv或bar命令 我认为经典的dd命令也应该允许这样做。谢谢,使用iflag=fullblock bs=xxx的dd确实解决了我希望按字节计数进行缓冲的情况。是否有任何可用的缓冲时间?

Linux 在bash中解析CSV并分配变量

我有一个csv格式(在linux上使用Bash) 我可以使用awk通过 eval MAC=($(awk -F "," '{print $1}' random.csv)) 这是针对CSV中的每一列完成的,因此我可以分别调用DN[2],MAC[2]等,这是手动的,并分别对它们进行解析 但是如何按行解析csv? 例如:如果我调用的DN是123,则相应的MAC和分区也应返回。尝试一个循环: while IFS=, read dn mac partition do echo "Do somethi

如何建立;安装GLFW3并在Linux项目中使用它 GLFW3

昨晚我工作到很晚,试图从源代码构建Linux的GLFW3包。这个过程花了我很长时间,总共大约3个小时,部分原因是我不熟悉CMake,部分原因是我不熟悉GLFW 我希望这篇文章能把你从我昨天遇到的困难中解救出来!我想我应该写一篇简短的评论,希望能帮你节省几个小时的时间 多亏了#glfw IRC频道上的“urraka”、“b6”和“niklas”,我才能够让glfw版本3.0.1正常工作 事实证明,这不是一个简单的过程(当然不是对我来说,我不是专家),因为网上没有太多关于glfw3的文档,特别是关于

Linux 如何创建动态变量并为其赋值?

我正在尝试创建一个动态变量,并为其赋值100 #!/bin/bash . . active_id=$p_val flag_$active_id=100 但是我这样做会出错,有什么帮助吗?我不知道这有什么好处,但是你可以通过bash的eval语句来实现这样的效果 下面的代码说明了这一点 #!/bin/bash p_val="TEST" active_id=$p_val eval "flag_$active_id=100" echo $flag_TEST eval "echo \$

Linux MMU实现

简短问题:页表驻留在哪里?它是在MMU(完全硬件实现)还是在RAM(涉及操作系统)中 我试图弄清楚在TLB未命中的情况下,RAM访问是否涉及将线性地址映射到物理地址。我猜答案是“不”,实现完全是硬件,但我不确定。我看到有人提到它可以像软件一样硬件,但我对英特尔处理器的常见情况感兴趣。英特尔体系结构中的TLB是在硬件中处理的。引用TLB实现

Linux Bash在存在特定字符串时打印第n个单词

在IHS访问日志中,如果有401响应,我需要逐行获取信息 以下是格式,我需要逐行查看日志以获取用户属性前面的特定数字(在本例中为123或432),仅当在该行上找到401响应时 比如,如果第n行的第n个字是401,那么从第n列抓取数字并打印出来 myhost.com xxx.x.xxx.x aaa.aa.aa.aaa - - [14/Aug/2013:10:44:55 +1000] "GET /http/user=123 HTTP/1.1" 401 55 "-" "Apache-HttpClie

Linux gitlab如何简化授权ssh密钥的工作?

在使用git时,为了授权开发人员,我们要求他们提供公共ssh密钥,然后将其标记为已授权 使用gitlab,开发人员可以通过帐户接口保存ssh公钥。授权部分是如何处理的 请尽早回复。通过进行管理,该管理取代自 从~/.ssh/authorized_key调用脚本 它附带一组命令,包括用于ssh密钥管理的命令: 钥匙: 添加键 删除密钥 从授权密钥文件中删除所有密钥 嗨,沃克!您提到“bin/install脚本是从~/.ssh/authorized_keys调用的。bin/gitlab shell中

如何在Linux上动态监控每个核心的CPU使用情况?

我想动态查看每个核心的CPU使用情况,包括消费用户模式和内核,我应该如何做?您可以使用top命令动态查看每个核心的CPU使用情况(不确定消费用户模式和内核是什么意思) 在终端中键入top 然后键入1您可以使用dstat,它为网络寻呼和系统提供一些更有用的信息。这些信息可以捕获到文件(csv等)中以供将来使用 例如,假设您的机器有4个内核。你可以做以下事情 dstat -C 0,1,2,3,total 如果您只想查看Core 2和Core 3的统计信息,可以执行以下操作: dstat -C 2,

如何在linux上调度Tasklet?

linux具有调度的微线程队列。当cpu从中断或系统调用返回时,它会检查并执行调度的微线程。如果要处理的Tasklet太多怎么办?Tejas 这是一个非常好的问题 tl;dl对这个问题的回答是: first-come-first-serve within the softirq-tasklet thread. (这是预期的,因为微线程构建在SoftIRQ之上,但具有更简单的界面和宽松的锁定规则。) 这篇文章,,“讨论了你不应该在中断处理程序中做太多的工作,以免丢失新的中断和其他设备缺乏继续工作

Linux 如何临时缓冲对延迟敏感的HFT应用程序的传入网络流量?

我们正在运行一个基于Java的交易应用程序,在某些特定的时间段内,我们希望尽可能多地优先处理传出的网络流量,持续约10毫秒。是否有一种方法可以在短时间内临时缓冲所有传入的网络流量,无论是在网卡上还是通过Redhat Linux机箱上的进程或缓冲区 这背后的基本原理是,传入的网络流量在同一时间段内出现峰值,而处理此流量的应用程序正在从我们试图确定优先级的进程中窃取CPU周期。我们对处理传入网络流量的应用程序没有细粒度的控制 我们使用的是1 Gbps连接,因此大约1 MB的缓冲区应该足够了。我们不希

Linux 停止在与SUDO一起运行的脚本的中间生根

有一个命令列表,这些命令只有在以sudo开头时才会成功 还有另一个命令列表,只有当用户在没有sudo的情况下运行它们时,这些命令才会成功 我想从同一个脚本执行所有这些命令。 我想避免做以下事情: #!/usr/bin/env bash sudo sudo_command_one; sudo sudo_command_two; sudo sudo_command_three; non_sudo_command; sudo sudo_command_four; 原因是sudo有一个超时,这些命令可

Linux 需要包含带有';差异';作为补丁的实用程序

当对两个目录dir和dir.orig执行“diff-bBupwr”以捕获差异时,util不包括仅存在于dir中的文件,它只报告例如dir/app.c仅存在于dir/中,但我希望将其添加到生成的diff文件中,以便将其作为补丁应用 我查了“man diff”,但没有发现任何线索。我很感激你给我的建议。谢谢。使用选项-N。手册页上说: -N, --new-file treat absent files as empty

配置httpd.conf以在Apache Red Hat Linux上添加新站点

我已经安装了带有apache的linux服务器(Red Hat Enterprise linux server 5.3版(Tikanga))。它已经用于浏览某些文档。现在我想添加一个新目录(带有html页面),这样每当浏览目录时,它都可以显示html页面 但是我不确定在哪里编辑httpd.conf文件 现有httpd.conf: 当我点击url“”时,它显示文件夹列表 现在,我想向这个现有网站添加一个网站,因此当用户点击url“”时,它应该在浏览器中显示一个html页面。我已经在/var/ww

Linux 执行';同步';和';syncfs';系统调用映射到FUSE';s';fsync';电话?

不公开文件系统级别的sync调用,只公开和fsyncdir。这是否意味着当调用sync时(或在FUSE挂载点内调用syncfs),内核会对所有FUSE挂载文件系统上所有打开的文件调用fsync?或者有不同的语义吗?查看内核源代码,似乎在sync和syncfs上执行了任何挂起的写回,但是没有调用fsync(反正不是AFAICS),因此实际上没有任何方法知道调用了sync或syncfs 相关代码在中,例如 如图所示,这将调用FileSystem超级块上的fsync\u fs操作,但fuse未定义任何

Linux 检查文件是否已创建和删除?

我需要测试一个创建临时文件的程序。运行完成后,将删除该文件。如何检查文件是否已创建和删除 我正在考虑向进程发送一些信号(如Ctrl-Z)以暂停它并进行检查,但应该是更简单的方法 我在Linux中使用bash。由于您无法访问程序代码,因此可以使用strace工具拦截进程发出的所有系统调用。然后使用简单的greps,您可以查找文件创建、删除和所有相关操作。如果您可以确定地知道创建文件的时间,您可以使用“-f”选项来挂起文件,那么您可能必须使用“-f”选项来确保记录所有内容,包括任何进程的子进程执行的

Linux ldconfig无法加载ld.so.conf

所以我编辑了我的/etc/ld.So.conf文件,现在它看起来像这样: include /opt/intel/mkl/lib/intel64_lin include /etc/ld.so.conf.d/*.conf include /usr/local/lib 我已经尝试运行了sudoldconfig-v,但在输出中,它似乎甚至没有尝试加载MKL库目录。当我尝试使用MKL运行程序时,它失败了。但是,如果我在/usr/local/lib中添加一个符号链接到从/etc/ld.so.conf.d/

Azure Linux虚拟机的SSH超时

调整虚拟机大小后,我无法通过SSH连接到我的Linux Azure虚拟机(Ubuntu 14.10) 我已经试过了- Resizing the VM Resetting the password using new azure portal Basically all the steps that are mentioned here : 我仍然收到“ssh:connect to host bookmarks.cloudapp.net port 22:Connection timed o

Linux 暂停流程的管道输入

我试图通过管道将一些输入(如标准输入,而不是命令行参数)从文件传输到linux机器上的挂起进程,例如 cat file > fg 然而,我似乎找不到正确的命令。到目前为止我已经试过了 file > fg file | fg file - | fg fg < file fg < cat file file>fg 文件| fg 文件-| fg fg

Linux 查找Docker容器进程?(从主持人的角度)

我正在对docker和容器进行一些测试,我想知道: 是否有一种方法可以用于从主机的角度按名称或ID查找与docker容器关联的所有进程 毕竟,容器归根结底是一组虚拟化进程 docker ps将列出正在运行的docker容器 docker exec ps将告诉您它正在运行的进程 在docker容器中运行的进程是名为containerd shim的进程的子进程(在docker v18.09.4中) 首先找出容器垫片进程的进程ID 对于它们中的每一个,找到它们的子进程 pgrep容器垫片 要查

资源linux脚本,禁用/刷新额外输入

各位下午好, 我已经创建了一个工作相当好的资源监控工具 提高CPU平均使用率 平均内存使用率 甚至计算NIC吞吐量的百分比(如果您有1Gb NIC,它将显示一次正在处理的百分比)。。。是的,我知道这更像是对NIC的粗略估计/理论最大限制 不过,我的脚本有一个问题。下面是我遇到问题的部分代码(为了简单起见,我将一些代码转换为伪代码) 基本上,您可以按任意键启动程序,程序启动后(在循环时)只要按键盘上的任意键,程序就会停止录制信息并继续运行 现在这个脚本工作了,并且完成了我需要它做的一切。我遇到

克隆后立即在OSX上修改Linux内核源代码

当我在OS X上克隆Linux源代码时,它们会立即被更改,git reset--hard不会返回内容。以下是完整的课程: $ git clone git://github.com/torvalds/linux.git $ cd linux $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <f

Linux 为什么ryzen上的p状态MSR没有改变?

我正在尝试检测cpu的当前p状态。我注意到,在我的ryzen 1700x系统上,p状态MSR(C001_0063)总是返回2,即使内核显然不处于该状态。我想它曾经与我的主板附带的初始bios(v0403)一起工作,但现在已经无法下载了1 我的cpu超频了2到3.8GHz。我使用cpufreq set来固定速度,并使用cpufreq info来验证: analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardw

Linux Docker环境变量传递不正确

我的Docker映像(CentOS 7)运行一个bash脚本,该脚本需要一些环境变量。bash脚本通过ENTRYPOINT指令启动 # Inside the Dockerfile ADD run.sh . RUN chmod 777 run.sh ENTRYPOINT ["/bin/bash", "-c", "./run.sh"] # Inside run.sh echo MakeDir: $MakeDir 要启动此容器,我运行以下命令: docker run -t myimage -e M

Linux _uclibc中的dl_调试_状态函数

我有一个关于_dl_debug_state函数的问题。这个函数是在内核进程空间还是用户空间中执行的 我还有同样的问题sys\u open..一旦sys\u open开始执行,内核将处于内核模式还是用户模式

Linux 从Angstrom通过NFS在WSL中安装rootfs

我试图通过NFS将一个根文件系统从运行Windows Subsystem for Linux(Ubuntu 20.04.1 LTS)的Windows 10系统加载到运行Angstrom Linux(v2017.06)的嵌入式项目中。我已将Windows中的一个驱动器(R:)映射到WSL Linux路径(\WSL$\Ubuntu)。然后,我让一个NFS服务器在Windows中运行,指向路径(R:\home\NFS\rootfs\rootfs)。在嵌入式项目(Angstrom)中,我使用以下命令装载

脚本LinuxBash,根据行中的字数打印grep输出

我正试图为bashshell编写一个scirpt。我得到了4个参数: 目录路径 文件扩展名 一句话 数 我必须查找路径的所有文件和子目录的文件,以及具有给定扩展名的文件。然后,在文件中查找与给定单词匹配的行,但前提是行中的单词数大于或等于提供的数字。 例如: 如果localDirectory具有:image.png script.sh text.txt 并且text.txt具有: This is a text file It contains many words This is an exam

Linux E:子进程在运行sudo apt get update时返回错误代码

我想在我的ubuntu上安装一些我正在使用的应用程序的更新,但是没有,我试着运行sudo apt get update,这就是我得到的 sudo apt-get update Hit:1 http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu bionic InRelease Hit:2 http://repository.spotify.com stable InRelease Hit

Linux 查找工作区并删除名称为的所有内容,除了文件名和目录模式中的所有内容

我正在尝试创建一个cronjob,它将删除模式为*.jar的所有内容,除了master.jar和目录模式*/jarkeeper/*/staging中的任何内容/* 我差一点就找到了正确的命令,但运气不好。以下是我目前掌握的情况: find /var/lib/jenkins/workspace/ ! -path "*/jarkeeper/*/staging/*" -or -type f ! -name master.jar -name \*.jar 及 正确的格式应该是什么?