Articles of find

删除指定时间以前的所有文件并logging其function

我一直在努力这一段时间,经过大量的search决定是时候从专家的帮助。 我试图删除目录中的所有文件/filestodelete并在/filestodelete文件中记下他们,到目前为止,我已经想出了: find /filestodelete -mtime +93 -exec sh -c 'rm -rfv {}' > "/something/deletions.log" 当我尝试运行这个时,收到的错误是: find: missing argument to `-exec' (我把/something/deletions.log放在引号中,因为它实际上可能有空格 – 它被另一个bash脚本调用)。 在此先感谢您的帮助。

查找500个最旧的文件

我怎样才能find前500名最古老的文件? 我试过了: find /storage -name "*.mp4" -o -name "*.flv" -type f | sort | head -n500

如何使用find -exec删除部分文件扩展名

我想用“find”重命名一堆文件,重命名只是删除部分扩展名。 示例:abc.ext.DELAYED – > abc.ext 我试过以下,但他们根本不工作: find . -name *.DELAYED -execdir mv {} $(echo {} | sed 's:\.DELAYED::') \; find . -name *.DELAYED -execdir mv {} $(echo {} | cut -f 1 -d".") \;

查找不包含“* .sql”文件的目录

我有几个如下所示的目录。 我想列出没有SQL文件的目录。 例如下面例子中的“dev.mysite.com”。 我使用的Ubuntu 14.04 LTS orange.com/ orange.com.sql 10.10.10.1/public_html/… apple.edu.us/ apple.edu.sql 10.10.10.2/public_html/… dev.mysite.com/ 10.10.10.3/public_html/ example.com/ mysql_dbdump20150911.sql 10.10.11.11/public_html/… 我试图通过使用“剪切”和“xargs”的“查找”,并将这些目录移动到“dirwithsql”目录,并采取其余的目录没有SQL文件手动来实现这一目标。 find . -maxdepth 2 -iname "*.sql" | cut -d'/' -f 2 | xargs -n 1 -I {} mv {} /backup/dirwithsql/{} 我曾试过 find -maxdepth 2 ! -iname "*.sql" -exec dirname {} \; 但是上面的命令显示所有目录 有没有更好的方法? 谢谢

比较两个目录中的文件和版本,其中一个具有符号链接?

我们正在将一些旧的项目的工具移到一个新的版本控制版本(在同一个磁盘上,使用不同的用户名),我的任务是查找旧帐户中的实用程序新的,并find两个帐户之间的不同文件。 新帐户已经运行了大约一年,人们对旧文件中的某些文件做了(小的)更改,而没有将其更改为新文件。 这些实用程序在远程服务器上,我只能读取(除了我自己的主文件夹)。 旧帐户称为user1,在〜user1 / bin /文件夹中包含所有实用程序,包括每个实用程序的源代码,可执行文件和脚本。 新帐户user2已经被设置为〜user2 / bin /文件夹中的每个“可执行文件/脚本”与子文件夹〜user2 / src / {utilityname} /中的相应文件的符号链接,还包含该可执行文件的来源。 有没有比这两个目录比较容易的方法 find ~user1/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user1.txt find -L ~user2/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user2.txt 并手动比较结果,看看有什么不同/缺less? 另外,上面的命令只会比较〜user2 / bin /文件夹中的可执行文件/脚本,即使user1和user2之间的user2 / src / {utilityname} /中的源代码相同,例如,脚本中的不同path)。 是否有可能search一个实用程序的符号链接目标所在的文件夹为同名的源文件,以便我可以直接比较user1和user2之间的源文件?

pipe道特定的gziped日志文件列表到zgrep中

我在获取一堆gzip的apache访问日志文件中的行列表时遇到了麻烦。 我想要的只是获得编号为1和2的日志文件列表,然后grep通过它们并提取具有特定匹配文本的行。 我原来只是为了访问日志归档1而工作。“/ pathname”文本是我正在寻找的文本: zgrep /pathname/ access_*.log.1.gz 由于ls不支持正则expression式,我想出了以下内容来从我想要的文件的当前目录中获取一个列表: find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n' find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||" 我现在的问题是采取该文件列表输出和zgrepping通过文件返回符合我的文本的文件中的行。 我在这里叫错了树吗?

如何使用Unix CAT和Find来插入新行

我有这样的文件列表: /somedir/file1.fa >foo ATCGGGGG /somedir/file2.fa >bar CCCCCCC 还有很多这些文件。 我想要使​​用下面的命令执行一个CAT find /somedir/ -name "*.fa" | xargs cat > All.fa 但是为什么我在All.fa遇到这个All.fa >foo ATCGGGGG>bar CCCCCCC 代替 >foo ATCGGGGG >bar CCCCCCCC 有没有办法纠正它?

如何在find命令的Linux中的{}参数上应用正则expression式

我想更改某种types的文件上的文件名称。 它应该recursion运行。 我已经差不多了,不知道如何处理参数{}(绝对path)。 find $PWD -type f -name '*.jpg' -exec echo " {} " \; 例如,我想要使用reg更改扩展名。 expression式,而不是命令重命名等。我有时需要新的名称传递给一个函数,因此重命名不适用here.应该是可能的工作与参数,例如在参数$ each: for each in /* do echo "${each\./\}.png" done 如何在参数{}上应用正则expression式,如下所示:“$ {each \。/ \} .png”?

/ usr / bin / find参数列表太长

尝试使用以下命令行search从list.txt中排除的所有文件 find . -type f -name "*.ext" $(printf "! -name %s " $(cat list.txt)) 我得到以下结果 -bash: /usr/bin/find: Argument list too long 我也试过xargs,但不知道我是否正确使用它。 任何帮助,将不胜感激。

奇怪的错误,而在批处理脚本中使用查找

我正在尝试这段代码来调整文件夹内recursion大于1 MB的JPG文件。 find . -type f -size +1M -name "*.jpg" | xargs convert -resize 1000×1000\> -verbose 获取错误消息(在15-20次迭代之后中断批处理) xargs: convert: terminated by signal 9 如何解决这个问题?