我有一个深度各异的文件夹结构,类似于以下内容。
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/
反复删除目录(对于其中包含的每个酒店),直到目录为空。
它也不能处理名称冲突——它将移动第一个具有给定名称的酒店,而保留其他酒店。