相关疑难解决方法(0)

`find -path` 解释

find命令提供了选项-path。我知道人们必须定义从哪里开始寻找 [通常称为“路径”]。为了弄清楚它的用途,我发现了许多find -path -prune用于排除某些路径的示例。

问题:解释是什么find -path;此选项用于什么。

请注意:这对我来说似乎很清楚,但它并不像我猜的那样工作。我浏览了maninfo页面,但我不明白这个选项的全部含义。

编辑我的理解是:find /some/path -name stuff应该开始寻找“东西”,在目录开始,path这是一个子目录some。作品。但是,该-path选项定义了什么?定义包括像这样的句子

不要对待/.特别

没有多大帮助,甚至更令人困惑。

find

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

find: prune 不忽略指定路径

我需要.git从我的find搜索中排除。为了实现这一点,我正在使用-path ./.git -prune开关:

$ find . -path ./.git -prune -o \( -type f -o -type l -o -type d \) | grep '.git'
./.git
Run Code Online (Sandbox Code Playgroud)

然而,即使这跳过了 .git 目录的内容,它也会列出目录本身。当我添加时它有效-path ./.git -prune -o -print -a

find . -path ./.git -prune -o -print -a \( -type f -o -type l -o -type d \) | grep '.git'
Run Code Online (Sandbox Code Playgroud)

为什么这是必要的。我认为这两个命令应该有相同的输出。第二种语法非常难看。

bash find

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

如果父目录也在列表中,则从列表中删除路径

我的标题可能用词有点奇怪,所以这是我的情况:我有一堆目录路径,例如

/a/b
/a/b/c
/a/b/c/d
/a/e/f/g/h
/a/e/f/g/h/i/j/k/l
/a/e/f/g/m/n/o
/a/e/f/g/m/n/p
Run Code Online (Sandbox Code Playgroud)

我想过滤掉列表中已经存在的条目的子路径的所有行,例如

/a/b
/a/e/f/g/h
/a/e/f/g/m/n/o
/a/e/f/g/m/n/p
Run Code Online (Sandbox Code Playgroud)

目录路径是从 获得的find因此它们应该可靠地按自上而下的顺序排列。解析为数组或多行字符串的解决方案都是受欢迎的。

grep bash sed awk

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

标签 统计

bash ×2

find ×2

awk ×1

grep ×1

sed ×1