在同一个文件夹树上多次调用 find
Calling find more than once on the same folder tree
我 运行 对同一组文件多次执行查找命令。我的查找命令的结果通常是不相交的集合,也就是我 运行 find -mmin +35; find -mmin -25,并对结果做不同的处理。
一次搜索就可以多次搜索整个文件系统,这似乎有点愚蠢。有没有办法将多个 "search parameters" 放入单个查找命令中,并根据它满足的参数将输出传输到不同的地方?
谢谢
试试这个:
find . -mmin +35 -or -mmin -25
find 支持多种逻辑运算符(-and、-or、-not)。有关详细信息,请参阅手册页的 OPERATORS 部分。
====================
编辑:在回答关于以不同方式处理两个匹配项的问题时,我不知道直接使用 find 执行此操作的方法。就我个人而言,我会做的是像这样在 for 循环中处理输出(注意这是伪代码):
for f in `find . [condition 1] -or [condition 2]` ;do
if [ f meets condition1 ]; then
doSomething
elif [ f meets condition2 ]; then
doSomethingElse
fi
done
我相信有很多 bash 专家可以更干净、更高效地完成这项工作。
您可以使用 tee
将输出复制到两个不同的子 shell 并进行不同的处理。
find . -mmin +35 -or -mmin -25 | tee \
>(while read f; do if [ $f meets condition1 ]; then; doSomething; done) \
>(while read f; do if [ $f meets condition2 ]; then; doSomethingElse; done) \
>/dev/null
这是我看完EJK的回答第一个想到的解决办法
编辑:这是未经测试的。显示原理的工作示例如下:
echo -e "abc\ndef\nauv\nafg\ndtt" | tee >(grep -P '^a' > a.txt) >(grep -P '^d' > d.txt) >/dev/null
我 运行 对同一组文件多次执行查找命令。我的查找命令的结果通常是不相交的集合,也就是我 运行 find -mmin +35; find -mmin -25,并对结果做不同的处理。
一次搜索就可以多次搜索整个文件系统,这似乎有点愚蠢。有没有办法将多个 "search parameters" 放入单个查找命令中,并根据它满足的参数将输出传输到不同的地方?
谢谢
试试这个:
find . -mmin +35 -or -mmin -25
find 支持多种逻辑运算符(-and、-or、-not)。有关详细信息,请参阅手册页的 OPERATORS 部分。
==================== 编辑:在回答关于以不同方式处理两个匹配项的问题时,我不知道直接使用 find 执行此操作的方法。就我个人而言,我会做的是像这样在 for 循环中处理输出(注意这是伪代码):
for f in `find . [condition 1] -or [condition 2]` ;do
if [ f meets condition1 ]; then
doSomething
elif [ f meets condition2 ]; then
doSomethingElse
fi
done
我相信有很多 bash 专家可以更干净、更高效地完成这项工作。
您可以使用 tee
将输出复制到两个不同的子 shell 并进行不同的处理。
find . -mmin +35 -or -mmin -25 | tee \
>(while read f; do if [ $f meets condition1 ]; then; doSomething; done) \
>(while read f; do if [ $f meets condition2 ]; then; doSomethingElse; done) \
>/dev/null
这是我看完EJK的回答第一个想到的解决办法
编辑:这是未经测试的。显示原理的工作示例如下:
echo -e "abc\ndef\nauv\nafg\ndtt" | tee >(grep -P '^a' > a.txt) >(grep -P '^d' > d.txt) >/dev/null