我需要找到一个图像,比如 ABC.jpg,我知道它会以编程方式放置到一个名为 ABC_MPSC 的目录中。我试过了:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Run Code Online (Sandbox Code Playgroud)
但这不会返回任何内容(我实际上知道我正在寻找的特定位置在哪里,所以我知道它存在)。是否有一个查找命令可以让我不必手动搜索?
Jef*_*ler 17
这里有一个-path
有用的谓词:
find . -path '*/ABC_MPSC/ABC.jpg'
Run Code Online (Sandbox Code Playgroud)
如果当前路径名使用模式匹配表示法中描述的模式匹配表示法匹配模式,则主节点应评估为真。用于文件名扩展的模式中的附加规则不适用,因为这是匹配操作,而不是扩展。
你-name "ABC_MPSC/ABC.jpg"
失败的原因是因为-name
谓词:
如果当前路径名的基名与模式匹配,则应评估为真
换句话说,-name
永远不会看到当前文件名的目录,只会看到基本文件名本身(例如 ABC.jpg)。
Kus*_*nda 10
两种方式(除了使用-path
):
查找目录,然后检测文件:
find / -type d -name 'ABC_MPSC' -exec test -f {}/ABC.jpg \; -print
Run Code Online (Sandbox Code Playgroud)
这依赖于find
实现来扩展{}
到找到的目录的当前路径名的实现,即使它与/ABC.jpg
(不需要这样做)连接。也可以写成
find / -type d -name 'ABC_MPSC' \
-exec sh -c 'test -f "$1"/ABC.jpg' sh {} \; -print
Run Code Online (Sandbox Code Playgroud)查找文件,然后检查它的父目录名称:
find / -type f -name 'ABC.jpg' -exec sh -c '
case $(dirname "$1") in
*/ABC_MPSC) exit 0 ;;
*) exit 1
esac' sh {} \; -print
Run Code Online (Sandbox Code Playgroud)这两种替代方法都比-path
按照 Jeff 展示的方式使用要慢。我仍然将它们留在这里作为示例,因为它们可能适用于其他事物。
归档时间: |
|
查看次数: |
588 次 |
最近记录: |