如何在 Bash 中的每个现有目录中递归创建 Textures 目录,然后删除它们?

如何在 Bash 中的每个现有目录中递归创建 Textures 目录,然后删除它们?

假设我有以下结构:

./
├── Dir1
├── Dir2
│   ├── SubDir1
│   │   └── SubSubDir1
│   └── SubDir2
└── Dir3
    └── SubDir1

使用它来制作测试结构:

mkdir -p Dir1 Dir2/SubDir1/SubSubDir1 Dir2/SubDir2 Dir3/SubDir1

我想Texture在每个目录中创建一个文件夹来包含当前位置,因此它看起来像这样(所有新Texture目录都标有*):

./
├── Dir1
│   └── Textures*
├── Dir2
│   ├── SubDir1
│   │   ├── SubSubDir1
│   │   │   └── Textures*
│   │   └── Textures*
│   ├── SubDir2
│   │   └── Textures*
│   └── Textures*
├── Dir3
│   ├── SubDir1
│   │   └── Textures*
│   └── Textures*
└── Textures*

然后,我也可以在使用这些文件夹后将其删除。您可以假设没有其他Textures需要保存的目录。


因此,我想Textures在当前目录及其所有子目录中创建一个目录。并且我希望能够Textures在移动完文件后删除每个命名的目录。

答案1

您可以使用循环...

shopt -s globstar                   # turn on recursive globbing
for d in **/; do                    # for every directory
    echo mkdir -p "$d"Textures      # make a new directory inside named Textures
done

测试后删除echo以实际创建目录。

您可以使用 关闭globstarshopt -u globstar,但它默认是关闭的,并且将在您启动新 shell 时关闭。

做你自己的事...

然后删除目录,find首先

find -type d -name "Textures"

然后,如果输出看起来正常,添加-delete

find -type d -name "Textures" -delete

相关内容