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

时间:2015-11-02 01:18:50

标签: bash unix

我发现了许多脚本,这些脚本将递归地压缩子目录的所有内容以及目录的子文件夹的子文件夹。但我只想平整一个级别并保持子文件夹完好无损。我怎么能用bash脚本来做呢?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

mv */* .

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

答案 2 :(得分:0)

这个怎么样?

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

获取每个第一级子目录的ls输出以及顶级的所有内容。