find:只允许一个特定的子目录

find:只允许一个特定的子目录

我有以下文件夹结构

| subdirectoy1
| |
| |_ file1.jpg
| |_ file2.jpg
| |_ ...
|
| subdirectory2
| |
| |_ file11.jpg
| |_ file12.jpg
| |_ ...
|
| ...
|
|_ file21.jpg
|_ file22.jpg
|_ ...

正如您所看到的,该文件夹的根级别有一些文件和各种子目录(比我的树中的两个多),每个文件都包含更多图像。

我现在的想法是,我想要寻找根级图像和 subdirectory1 中的图像,但是不是其他目录中的那些。

好吧,我可以采用简单的方法,将其他目录一一排除

find . -type f -not -path "*subdirectory2*" -exec ...

但我希望这条线能够更适应其他文件夹未命名的情况子目录2等等。

或者换句话说:有没有办法说

find . -maxdepth 1 ...

但除了该边界下方的一个特定子目录之外?

答案1

您可以修剪不属于以下内容的目录subdirectory1

find . ! \( -name . -o -name subdirectory1 \) -prune -type f

您可以在 后添加您想要对文件执行的任何操作-type f

其工作原理如下:

  • 从当前目录开始
    • 修剪任何不匹配的内容.subdirectory1(这将忽略任何其他目录)
    • 仅保留常规文件

这将找到当前目录和 中的所有文件subdirectory1(不进入 的subdirectory1子目录)。

相关内容