如何在 Linux Ubutnu 上将文件夹移动到父文件夹中

如何在 Linux Ubutnu 上将文件夹移动到父文件夹中

我有一个深度各异的文件夹结构,类似于以下内容。

parent/location/businessname/sublocation/hotelname
parent/location/businessname/hotelname

所有最底层的文件夹都是酒店名称,我正尝试在 PHP 函数中获取这些文件。除此之外,我试图将所有最底层的文件夹及其内容抓取到单个父文件夹中,如下所示。

parent/hotelname

我在一台 Ubuntu 机器上,刚开始接触命令行,但也不是完全不懂。如能得到任何帮助,我将不胜感激。

答案1

假设最叶级的文件夹位于businessname/businessname/sublocation,您可以先从嵌套文件夹开始,然后继续到与 同一级别的酒店sublocation/

$ cd /tmp
$ rm -rf parent
$ mkdir -p parent/location/businessname/sublocation/hotelname1 \
           parent/location/businessname/hotelname2

$ for depth in 2 1; do
    find parent/location/businessname -mindepth $depth -type d -print0 \
      | while read -d '' dir; do
          echo "$dir"
          mv "$dir" parent/ \
            && rmdir --ignore-fail-on-non-empty $(dirname "$dir")
        done
  done

$ find parent/
parent/
parent/hotelname2
parent/hotelname1
parent/location

这有点不合法,因为它会尝试sublocation/反复删除目录(对于其中包含的每个酒店),直到目录为空。

它也不能处理名称冲突——它将移动第一个具有给定名称的酒店,而保留其他酒店。

相关内容