将多个嵌套文件向上移动,直到它们仅位于 1 个目录深度

将多个嵌套文件向上移动,直到它们仅位于 1 个目录深度

我有多个文件,位于多个目录中,其中一些文件隐藏在子目录下。我希望能够移动所有文件,直到它们仅位于 1 个目录深度。

例如:

/home/folder/subfolder/file1.txt
/home/folder2/file2.txt
/home/folder3/subfolder/subfolder/subfolder/file3.txt

变成:

/home/folder/file1.txt
/home/folder2/file2.txt
/home/folder3/file3.txt

我发现我可以使用

find ./*/ -type f

找到所有文件。但我不确定如何移动它们,以便它们只有 1 个目录深度。

答案1

我在 Bash 脚本中找到了答案

#!/bin/sh

IFS='
'
for i in $(find ./*/ -mindepth 2 -type f); do
    mv -- "${i}" "${i%/*/*}"
done

相关内容