![扁平化单个文件目录](https://linux22.com/image/1274274/%E6%89%81%E5%B9%B3%E5%8C%96%E5%8D%95%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95.png)
我花了很长时间尝试构建这个,并仔细寻找了一种方法。我有一个目录树,其中包含一组文件夹和文件。有些文件夹包含多个文件,但大多数文件夹只包含一个文件。
我正在尝试将位于根目录下一级目录中的所有文件移动到根目录中。例如:
- 根目录为:/volume3
- 子文件夹中的单个文件:/volume3/20110103/20110103.log
- 文件最终应为:/volume3/20110103.log
我知道如何相当轻松地展平整个结构,但我不知道如何展平条件部分。有人能帮忙吗?
答案1
您可以使用一个小的 shell 脚本来实现这一点。
#!/usr/bin/env bash
# go to "root" folder
cd /volume3
# loop over all items in "root" folder
for item in "$( ls )" ;
do
# if it's a folder
if [ -d "$item" ] ; then
# and only contains a single item
if [ "$( ls "$item" | wc -l )" = "1" ] ; then
# move all files in the folder to the "root" folder
mv "$item/"* .
fi
fi
done
(未经测试,但不是问题,因为理智的人总是保留备份)