Articles of find

使用排除列表查找在bash中查找的目录

现在,在你认为“之前已经完成”的情况下,请继续阅读。 和大多数试图findbash脚本的人一样,你最终将脚本硬编码为一行命令,但最终会在接下来的几个月/几年里编辑这个东西,所以你最终希望你做对了第一次。 我正在编写一个小的备份程序来做备份目录,并且需要find它们,而不是需要排除的directorie列表。 说起来容易做起来难。 让我来设置舞台: #!/bin/bash BasePath="/home/adesso/baldar" declare -a Iggy Iggy=( "/cgi-bin" "/tmp" "/test" "/html" "/icons" ) IggySubdomains=$(printf ",%s" "${Iggy[@]}") IggySubdomains=${IggySubdomains:1} echo $IggySubdomains exit 0 现在在这个结尾你得到/ cgi-bin,/ tmp,/ test,/ html,/图标这certificate了这个概念的作用,但现在需要进一步我需要使用find来searchBasePath并search只有一个级别的所有子目录,并排除列表中的子目录… 如果我手工input它将是: find /var/www/* \( -path '*/cgi-bin' -o -path '*/tmp' -o -path '*/test' -o -path '*/html' -o -path '*/icons' \) -prune -type d 我应该也许想循环到每个子目录,并做同样的事情…我希望你明白我的观点。 所以我试图做的似乎是可能的,但我有一个问题, printf“,%s”不喜欢我使用所有这些发现-path或-o选项。 […]

如何查找除名字以外的文件?

我有一个dir: BLA-BLA-bla1.tar.7z BLA-BLA-bla2.tar.7z BLA-BLA-bla3.tar.7z _bla-BLA-bla_foo.tar.7z 我需要find并删除“ .7z”以外的所有文件“.7z” 我用find / backups / -name“* .7z”-type f -mtime +180 -delete 我怎么能做到这一点?

Linux将文件重命名为dirname

我有很多像这样的文件: ./1/wwuhw.mp3 ./2/nweiewe.mp3 ./3/iwqjoiw.mp3 ./4/ncionw.MP3 ./5/joiwqfm.wmv ./6/jqoifiew.WMV 我怎么能在Linux Bash中像这样重命名它们: ./1/1.mp3 ./2/2.mp3 ./3/3.mp3 ./4/4.MP3 ./5/5.wmv ./6/6.WMV

Nagios插件检查文件是在x分钟内创build的

我试图将一个bash脚本转换成nagios插件 该脚本将运行一个find命令来查看是否在x分钟内创build了文件: #!/bin/bash # #Check NVR newfiles=$(find /srv/unifi-video/videos/* -name '*.ts' -mmin -10 | wc -l) if [[ $newfiles -eq 0 ]] ; then echo "!!!WARNING!!! The NVR has System stopped recording." fi 我试图把这个脚本转换成一个Nagios插件: #!/bin/bash # #Check NVR #http://www.netchester.com #Check if NVR System is recording correctly newfiles=$(find /srv/unifi-video/videos/* -name '*.ts' -mmin -10 | wc -l) case […]

在linux中查找string并replace行

我想要做到以下几点,但我似乎无法find一个优雅的方式来做到这一点。 我有一个如下所示的文本文件: ..more values stuff = 23 volume = -15 autostart = 12 more values.. 现在“音量”值可能会根据情况而改变。 我需要一个脚本,可以find“volume = xxx”的文本行,然后用“volume = 0”行replace它。 什么是这个优雅的解决scheme? 文中的这一行不能保证是第一行,所以我需要先find它的方法。

如何recursion删除具有不同扩展名的多个文件?

我正试图编写一个命令,从当前目录及其所有相关的子目录recursion地删除具有不同扩展名(* .extension1,* .extension2等)的几个文件。 到目前为止,我从另一篇文章中得到了这个命令,但是我不能在同一个命令行中修改多个文件。 find . -name "*.extension1" -type f -delete 是否如下简单? find . -name "*.extension1";"*.extension2" -type f -delete 正如一个侧面说明 ,这些都是我不需要的输出文件,但不是所有的都必须始终输出,所以一些扩展可能不存在。 这只是一般的清理命令。

在Linux文件系统上查找非UTF8文件名

O / S = Fedora Code 9。 我有一些隐藏在我的LANG = en_US:UTF-8文件系统中的文件,这些文件系统已经被上传了无法识别的文件名。 我需要search文件系统并返回至less有一个字符不在标准范围内的所有文件名(a-zA-Z0-9和。-_等) 我一直在试图追随,但没有运气。 find . | egrep [^a-zA-Z0-9_\.\/\-\s] 所有的build议将受到欢迎。 干杯, AP。

我怎样才能find一个文件/目录,可以在任何地方在Linux命令行?

理想情况下,我可以使用类似的程序 find [file or directory name] 报告具有匹配的文件名/目录的path。 不幸的是,这似乎只检查当前目录,而不是整个文件夹。 我也试过find和哪个,但没有find该文件,即使我知道它在电脑上的某个地方。

Linux / Cygwinrecursion复制文件更改扩展

我正在寻找一种方式来recursion地find扩展名为X( .js)的文件,并在扩展名为Y( .ts) 的同一目录中创build该文件的副本 。 例如/foo/bar/foobar.js – > /foo/bar/foobar.js和/foo/bar/foobar.ts /foo/bar.js – > /foo/bar.js和/foo/bar.ts等等 我的尽职调查:我正在考虑使用find&xargs&cp和括号扩展( cp foobar.{js,ts} ),但xargs使用大括号来表示从xargs传递的文件列表。 这让我感到难过,因为我刚刚发现了这个真棒酱,是扩大/替代。 我觉得必须有一个单线解决scheme,但我正在努力想出一个。 我发现了执行这个任务的想法:将所需的内容复制到一个新的目录,然后将这个目录与新的目录合并; recursion地在每个目录中运行一个重命名脚本; 使用rsync复制; 使用find,xargs和cpio。 现在看来,像这样运行一个重命名脚本脚本是我最终要做的。

重命名一系列文件

尝试在Linux服务器上重命名一系列文件。 find我想要的文件很简单: find . -type f -wholename \*.mbox 当然,作为mbox文件,其中一些名称中有空格,所以它变成: find . -type f -wholename \*.mbox -print0 我pipe道xargs,以便我可以重命名文件: find . -type f -wholename \*.mbox -print0 | xargs -0 -I{} echo ${"{}"/.mbox/} 回声应该返回像INBOX,给INBOX.mbox,但是,bash抱怨: bash: ${"{}"/.mbox/}: bad substitution 我怎样才能解决这个问题? 如果可能的话,我想尽量保留在find / xargs解决scheme中,这样我就不会在周围增加很多循环结构。