Bash 如何在终端命令中展平一级目录?
我发现了很多脚本,它们可以递归地展平目录子文件夹及其子文件夹的所有内容。但我只想展平一层并保持子文件夹完好无损。我该如何使用bash脚本来实现这一点呢?这个怎么样Bash 如何在终端命令中展平一级目录?,bash,unix,Bash,Unix,我发现了很多脚本,它们可以递归地展平目录子文件夹及其子文件夹的所有内容。但我只想展平一层并保持子文件夹完好无损。我该如何使用bash脚本来实现这一点呢?这个怎么样 array=($(ls)) for i in "${array[@]}" do echo $i if [ -d $i ]; then cd $i ls cd .. fi done 获取每个第一级细分曲面的ls输出,以及从顶层开始的所有内容。这个怎么样 array
array=($(ls))
for i in "${array[@]}"
do
echo $i
if [ -d $i ]; then
cd $i
ls
cd ..
fi
done
获取每个第一级细分曲面的ls输出,以及从顶层开始的所有内容。这个怎么样
array=($(ls))
for i in "${array[@]}"
do
echo $i
if [ -d $i ]; then
cd $i
ls
cd ..
fi
done
mkdir -p dir0/dir1/dirA/dirX
mkdir -p dir0/dir2/dirB/dirY
mkdir -p dir0/dir3/dirC/dirZ
获取每个第一级细分曲面的ls输出,以及从顶层开始的所有内容
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
让我们看看现在的情况:
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
如果你不关心隐藏目录,就这么简单
如果你不关心隐藏目录,就这么简单。请定义你认为的“扁平化”的含义请定义你认为的“扁平化”的含义<代码>数组=(*)会更好<代码>数组=(*)会更好。将
[!.]*
和。?*
全局添加到该数组中,您将获得所有内容。将[!.]*
和全局添加到该数组中,您将获得所有内容。