标签: gnu-findutils

如何查找最近x分钟内修改的文件(查找-mmin不能按预期工作)

我正在尝试查找最近x分钟内修改的文件,例如在最后一小时内.网上的许多论坛和教程建议使用带有-mmin选项的find命令,如下所示:

find . -mmin -60 |xargs ls -l

但是,这个命令对我不起作用.从下面的清单中可以看出,它还显示了早于1小时前修改过的文件:

-rw------- 1 user user   9065 Oct 28 23:13 1446070435.V902I67a5567M283852.harvester
-rw------- 1 user user   1331 Oct 29 01:10 1446077402.V902I67a5b34M538793.harvester
-rw------- 1 user user   1615 Oct 29 01:36 1446078983.V902I67a5b35M267251.harvester
-rw------- 1 user user  72365 Oct 29 02:27 1446082022.V902I67a5b36M873811.harvester
-rw------- 1 user user  69102 Oct 29 02:27 1446082024.V902I67a5b37M142247.harvester
-rw------- 1 user user   2611 Oct 29 02:34 1446082482.V902I67a5b38M258101.harvester
-rw------- 1 user user   2612 Oct 29 02:34 1446082485.V902I67a5b39M607107.harvester
-rw------- 1 user user   2600 Oct 29 02:34 …
Run Code Online (Sandbox Code Playgroud)

unix linux bash gnu-findutils

37
推荐指数
5
解决办法
11万
查看次数

按大小查找文件更多MIN和更少MAX

我如何使用linux find命令搜索更多MIN和更少MAX的搜索文件

我尝试使用以下命令:

find . -type f -a -size +1000 -a -size -1100
Run Code Online (Sandbox Code Playgroud)

但它不起作用

linux bash gnu-findutils

12
推荐指数
1
解决办法
6649
查看次数

GNU find:默认操作何时适用?

Debian 8的find命令的手册页说:

如果整个表达式不包含-prune或-print以外的任何操作,则对整个表达式为true的所有文件执行-print.

那么为什么这些产出不同:

$ mkdir -p test/foo test/bar && cd test && touch foo/bar bar/foo
$ # Test 1
$ find . -name foo -type d -prune -o -name foo
./foo
./bar/foo
$ # Test 2
$ find . -name foo -type d -prune -o -name foo -print
./bar/foo
Run Code Online (Sandbox Code Playgroud)

所以测试1:表达式是否包含"除-prune或-print之外的其他动作?" 好吧,除了修剪,是的,这句话是真的,没有行动.所以这些结果是预期的,因为对于选项./foo之前的表达式-o返回True,所以它被打印出来.

但测试2:表达式是否包含"除-prune或-print之外的其他操作?" 好吧,不包括修剪和印刷品,是的,该陈述再次成立,没有其他行动.所以我希望得到相同的结果.

但我没有得到./foo.为什么?

就好像手册页应该是:"如果整个表达式不包含-prune以外的任何动作 或打印,-print对整个表达式为真的所有文件执行."

linux find gnu-findutils

5
推荐指数
1
解决办法
145
查看次数

在自制软件中,我怎么知道xargs属于findutil包?

我在Mac上,我不想使用内置xargs实用程序.因为它与gnu不同xargs.谷歌周围我发现xargs属于findutils自制软件包,我可以用一个简单的命令安装它brew install findutils.我的问题是,它有一个更简单的方法来识别xargs属于findutils

谢谢.

linux homebrew package gnu-findutils

5
推荐指数
1
解决办法
1838
查看次数

如何查找名称中包含换行符的文件

关于正确处理包含换行符等奇怪符号的文件名有很多说法。我认为使用 IFS 设置为换行符通常可以解决问题,但显然,如果名称中包含换行符,则情况除外。因此,作为一种防御手段,脚本可以首先检查子树是否至少有一个带有换行符的文件,然后停止并显示一条消息以首先修复名称。令人惊讶的是我无法find用火柴做到这一点-regex。成功的唯一途径是相当丑陋

find . -name "*"$'\n'"*"
Run Code Online (Sandbox Code Playgroud)

但例如find . -regex ".*\n.*"不起作用。Emacs 正则表达式应该允许像 \n 这样的转义字符,不是吗?n有趣的是,它与名称中带有字符的另一个文件相匹配。尝试了不同的 -regextypes 只是发现类型awk sed posix-extended和更多类型将文件与换行符匹配(比方说a\nxxx),但此外它们也会将文件与字符匹配n。诡异的。另一方面,GNU find 文档没有说明任何有关转义字符(如\n. 它们真的不受支持,因此我们无法\t \n \r \a在 find regexps 中使用和类似的功能吗?

regex linux bash find gnu-findutils

4
推荐指数
1
解决办法
1672
查看次数

如何将 GNU 与 find -exec 并行使用?

我想解压多个文件,

使用此答案,我找到了以下命令。

find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

如何通过上述命令使用 GNU Parallel 解压缩多个文件?


编辑 1:根据用户Mark Setchell提出的问题

文件在哪里?

所有的 zip 文件通常都在一个目录中。

但是,根据我的假设,该命令会根据 find 命令中给出的深度递归/非递归地查找所有文件。

文件是如何命名的?

abcd_sdfa_fasfasd_dasd14.zip

你通常如何解压缩一个?

unzip abcd_sdfa_fasfasd_dasd14.zip -d abcd_sdfa_fasfasd_dasd14

bash unzip gnu-parallel gnu-findutils

4
推荐指数
2
解决办法
2488
查看次数

在Git Bash终端中查找文件

我目前正在使用Git Bash导航文件目录和编辑文件。我想知道是否有命令在当前目录及其中的所有目录中搜索文件名。

git-bash gnu-findutils

3
推荐指数
3
解决办法
2万
查看次数

Unix find -mtime {一个负值或正值}

做什么find -mtime -4find -mtime +4做什么?我无法理解手册页中给出的示例。

unix gnu-findutils

3
推荐指数
2
解决办法
3736
查看次数

如何删除具有特定名称的所有子目录

我正在Linux上工作,并且有一个文件夹,其中包含许多子目录。我需要删除所有具有相同名称的子目录。例如,

dir
 |---subdir1
 |---subdir2
 |     |-----subdir1
 |---file
Run Code Online (Sandbox Code Playgroud)

我要删除全部subdir1。这是我的脚本:

find dir -type d -name "subdir1" | while read directory ; do
    rm -rf $directory
done
Run Code Online (Sandbox Code Playgroud)

但是,我执行了它,但是似乎什么也没发生。

我也尝试过find dir -type d "subdir1" -delete,但仍然没有任何反应。

linux bash shell gnu-findutils

2
推荐指数
2
解决办法
1082
查看次数

如果找到匹配,则停止查找命令的递归

使用GNU findutils,我需要在目录树中搜索某个文件.如果找到了给定分支的文件,我想阻止find进一步递归到分支.假设我想找到文件foo,这是我的目录树:

??? a
?   ??? a1
?   ?   ??? foo
?   ??? foo
??? b
??? c
    ??? foo
Run Code Online (Sandbox Code Playgroud)

鉴于我正在搜索上面的树,我想找到一个/ foo和c/foo.但是,我不想找到/ a1/foo,因为我已经在a1的父目录中找到了foo.看来我应该使用-prune标志来查找命令,我发现这个链接https://unix.stackexchange.com/questions/24557/how-do-i-stop-a-find-from-descending-into-例如,found-directories,但我不能让它工作.我的尝试包括:

$ find -name foo -type f -prune
./a/a1/foo <- Unwanted hit
./a/foo
./c/foo
Run Code Online (Sandbox Code Playgroud)

$ find -name foo -type f -prune -exec find ../foo -type f {} \;
find: paths must precede expression: ./a/a1/foo
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
find: paths must precede expression: ./a/foo
Usage: find [-H] …
Run Code Online (Sandbox Code Playgroud)

bash gnu-findutils

2
推荐指数
1
解决办法
65
查看次数

标签 统计

gnu-findutils ×10

bash ×6

linux ×6

find ×2

unix ×2

git-bash ×1

gnu-parallel ×1

homebrew ×1

package ×1

regex ×1

shell ×1

unzip ×1