即使/tmp
没有文件调用something
,搜索它find
也会返回 0:
$ find /tmp -name something
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
find
找不到任何东西时,如何获得非零退出状态?
unixfind(1)
实用程序非常有用,它允许我对符合特定规范的许多文件执行操作,例如
find /dump -type f -name '*.xml' -exec java -jar ProcessFile.jar {} \;
Run Code Online (Sandbox Code Playgroud)
上面的代码可能会对特定目录中的每个 XML 文件运行脚本或工具。
假设我的脚本/程序占用了大量 CPU 时间并且我有 8 个处理器。一次处理最多 8 个文件会很好。
GNU make 允许使用-j
标志进行并行作业处理,但find
似乎没有这样的功能。是否有替代的通用作业调度方法来解决这个问题?
有没有办法告诉 bashfind
命令输出它在做什么(详细模式)?
例如对于命令:
find /media/1Tb/videos -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
输出:
Found /media/1Tb/videos/102, executing rm -rf /media/1Tb/videos/102
...
Run Code Online (Sandbox Code Playgroud) find
对查找比 X 天前修改得更多的文件有很好的支持,但是我怎样才能find
找到在某个日期之前修改的所有文件?
我在find
手册页中找不到任何内容来执行此操作,只能与另一个文件时间进行比较或检查创建时间与现在之间的差异。制作具有所需时间的文件并与之比较是唯一的方法吗?
linux find 命令返回的条目的默认排序顺序是什么?
例如,如果我发出
find . -type f -name '*mp3'
Run Code Online (Sandbox Code Playgroud)
并且输出由多个子文件夹中的多个文件组成,列出目录的默认顺序是什么?同时,列出单个目录中的文件的排序顺序是什么?
有时它会返回:
./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3
Run Code Online (Sandbox Code Playgroud)
看看如何首先列出目录 B 的内容,然后是目录 A 的内容。同时在目录 A 中,文件以有趣的顺序列出。
我有一个 bash 脚本,用于将代码从 beta 环境部署到生产环境,但目前我必须手动将文件列表添加到 txt 文件中,有时我会错过一些。基本上我的部署脚本 cat/loops 复制文件。(导出/导入数据库也是如此,但这无关紧要..lol)
无论如何,我想使用该find
命令生成过去 14 天内修改的文件列表。问题是我需要删除路径./
才能使部署脚本正常工作。
以下是 find 命令用法的示例:
找 。-type f -mtime -14 > deploy.txt
这是deploy.txt
我的部署脚本中的猫行:
for i in `cat deploy.txt`; do cp -i /home/user/beta/public_html/$i /home/user/public_html/$i; done
Run Code Online (Sandbox Code Playgroud)
知道如何使用 bash 脚本来实现这一点吗?
谢谢!
我正在寻找一种解决方案来移动从今天起早一年的文件。我的日志分区已满,但我无法删除它们。他们需要很长时间。无论如何,我想出的一种解决方案是:
find /sourcedirectory -mtime 365 -exec mv "{}" /destination/directory/ \;
Run Code Online (Sandbox Code Playgroud)
这行得通吗?由于“ -mtime 365 ”而询问这是否会将较旧的文件从今天移动到新位置?
谢谢!
是否有一些简单的方法可以找出我网络上所有机器的 mac 地址,而不是对每个机器进行 SSH,ifconfig | grep HWaddr
如果网络上有 300 台机器,我真的需要一些简单的解决方案。
我的一个常见做法是对某种类型的所有文件执行 grep,例如,找到所有包含“rumpus”一词的 HTML 文件。为此,我使用
find /path/to -name "*.html" | xargs grep -l "rumpus"
Run Code Online (Sandbox Code Playgroud)
有时,find
会返回名称中带有空格的文件,例如my new file.html
. 但是,当xargs
将此传递给grep
时,我收到以下错误:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可以看到这里发生了什么:管道或xargs
正在将空格视为文件之间的分隔符。但是,对于我的一生,我无法弄清楚如何防止这种行为。可以用find
+完成xargs
吗?还是我必须使用完全不同的命令?
我想知道在 linux 中使用find
. 我经常发现自己在一个大磁盘上搜索文件,某种进度指示器会非常有用,比如一个栏或至少当前目录“查找”搜索。是否有任何脚本可以做到这一点,或者确实find
支持一些钩子?