在子文件夹上运行的 Shell 脚本

在子文件夹上运行的 Shell 脚本

我想编写一个简单的 shell 脚本,它将进入目录中的所有子文件夹,并将子文件夹中的文件组织到新目录中。基本上在终端中它看起来像:

cd ../subfolder1
mkdir newfolder
mv *.txt newfolder
cd ../subfolder2
mkdir newfolder
mv *.txt newfolder
etc.

但是,该cd命令似乎不适用于 shell 脚本。有人知道我该怎么做吗?

答案1

如果你的目录结构如下:

├── subfolder1
│   ├── foo.txt
│   └── bar.other
└── subfolder2
    ├── foo2.txt
    └── baz.old

运行以下命令:

find . -maxdepth 1 ! -path . -type d -exec sh -c "mkdir {}/newfolder && mv {}/*.txt {}/newfolder" \;

将创建以下树结构:

├── subfolder1
│   ├── newfolder
│   │   └── foo.txt
│   ├── bar.other
└── subfolder2
    ├── newfolder
    │   └── foo2.txt
    ├── baz.old

相关内容