我发现了很多脚本,它们会递归地展平目录的子文件夹以及这些子文件夹的子文件夹的所有内容。但我只想展平一层并保持子文件夹完好无损。我该如何使用 bash 脚本来做到这一点?
mv */* .
如果您不关心隐藏目录,那就这么简单。
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
这个怎么样?
array=($(ls))
for i in "${array[@]}"
do
echo $i
if [ -d $i ]; then
cd $i
ls
cd ..
fi
done
为您提供每个第一级子目录的 ls 输出以及顶层的所有内容。
如果您安装了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
等 👍