如何在终端命令中展平单级目录?

问题描述 投票:0回答:4

我发现了很多脚本,它们会递归地展平目录的子文件夹以及这些子文件夹的子文件夹的所有内容。但我只想展平一层并保持子文件夹完好无损。我该如何使用 bash 脚本来做到这一点?

bash unix
4个回答
7
投票
mv */* .

如果您不关心隐藏目录,那就这么简单。


3
投票
mkdir -p dir0/dir1/dirA/dirX
mkdir -p dir0/dir2/dirB/dirY
mkdir -p dir0/dir3/dirC/dirZ

让我们看看现在怎么样:

tree dir0

退货:

dir0/
├── dir1
│   └── dirA
│       └── dirX
├── dir2
│   └── dirB
│       └── dirY
└── dir3
    └── dirC
        └── dirZ

现在让我们奔跑吧

find dir0 -mindepth 2 -maxdepth 2 -exec mv -i '{}' dir0 ';'

让我们看看 dir0 现在怎么样了:

tree dir0

结果:

dir0
├── dir1
├── dir2
├── dir3
├── dirA
│   └── dirX
├── dirB
│   └── dirY
└── dirC
    └── dirZ

Ps:你也可以运行这样的东西:

 mv dir0/*/* dir0

0
投票

这个怎么样?

array=($(ls))
for i in "${array[@]}"
do
    echo $i
    if [ -d $i ]; then
        cd $i
        ls
        cd ..
    fi
done

为您提供每个第一级子目录的 ls 输出以及顶层的所有内容。


0
投票

如果您安装了Node

npm install -g flatten-this-folder
,您只需一个命令即可展平任何目录:
flatten

GitHub:https://github.com/whyboris/flatten-this-folder

NPM 包:https://www.npmjs.com/package/flatten-this-folder

😊 我是这个 CLI(命令行界面)/工具的创建者。如果发生任何文件名冲突,它将附加到文件名

-1
-2
等 👍

© www.soinside.com 2019 - 2024. All rights reserved.