扁平化单个文件目录

扁平化单个文件目录

我花了很长时间尝试构建这个,并仔细寻找了一种方法。我有一个目录树,其中包含一组文件夹和文件。有些文件夹包含多个文件,但大多数文件夹只包含一个文件。

我正在尝试将位于根目录下一级目录中的所有文件移动到根目录中。例如:

  • 根目录为:/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

(未经测试,但不是问题,因为理智的人总是保留备份)

相关内容