我有一个 parent/ 文件夹,里面有几个子文件夹。结构:
/parent/
/subfolder_1/
- file_1.txt
- file_2.txt
/subfolder_2/
- file_3.txt
- file_4.txt
现在,我需要递归地移动 parent/ 文件夹的内容到空的parent_tmp/ 目录。问题是,我需要在 parent/ 中保留原始文件夹结构。
移动后的预期结果:
/parent/
/subfolder_1/
(empty)
/subfolder_2/
(empty)
/parent_tmp/
/subfolder_1/
- file_1.txt
- file_2.txt
/subfolder_2/
- file_3.txt
- file_4.txt
通常情况下,我会简单地做
mv parent/* parent_tmp
但这当然会永久移动子文件夹。
有没有办法调整mv
命令来保持源目录原来的结构?
注意:
我意识到我可以,例如复制parent/到parent_tmp,然后删除parent/子文件夹中的文件。这是我的 B 计划。
最佳答案
您可以使用 find
来自 parent
和 parent_tmp
目录的父级:
find parent -type f -exec bash -c 'mkdir -p "parent_tmp/${1%/*}" &&
mv "$1" "parent_tmp/${1%/*}"' - {} \;
关于linux - 用于移动包含文件的子文件夹的命令,同时保持原始结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31675114/