Bash 移动文件时保留文件体系结构

Bash 移动文件时保留文件体系结构,bash,find,mv,Bash,Find,Mv,我想将一些文件从一个文件夹移动到另一个文件夹。假设我有: ├── bar │   ├── a_folder │   │   └── apicture.png │   └── another_folder │   └── myfile.txt └── foo 我希望将每个txt文件从bar移动到foo: ├── bar │ ├── a_folder │ └── apicture.png │ └── another_folder └── foo └── anot

我想将一些文件从一个文件夹移动到另一个文件夹。假设我有:

├── bar
│   ├── a_folder
│   │   └── apicture.png
│   └── another_folder
│       └── myfile.txt
└── foo
我希望将每个txt文件从
bar
移动到
foo

├── bar
│   ├── a_folder
    │   └── apicture.png
│   └── another_folder
└── foo
    └── another_folder
        └── myfile.txt
我尝试使用
find
命令使用:

find bar -type f -exec mv {} $temp/{} \;
这应该有效,但仅当文件夹已存在于
foo
文件夹中时。因此,我正在寻找一种在
foo
中创建这些文件夹的方法,而
mv
似乎没有这样做。我怎样才能做到这一点

cp -R bar/. foo/
find bar -type f -delete
是的,这涉及到一份拷贝,而不是一行,但除非我们在这里谈论大量数据和重复性工作,否则这是一个很好的权宜之计。(注意
bar/
而不是通常的
bar/*
,因为后者会丢失点文件。)

我怀疑是否有一种简单的方法来移动文件,但仍然保留目录。

内置了这种功能

cd bar && rsync --relative [--no-implied-dirs] . ../foo/
如果树中有要保留为符号链接的符号链接,请使用--无隐含目录

如果只想将文件移动到目标目录已存在的位置,请使用
--no dirs
标志


rsync不在POSIX工具集中,但它在类似UNIX的机器上很常见,包括OS X和大多数Linuxen。

我编辑了我的问题,因为实际上我不想移动每个文件,只移动其中的一些文件。我想你的解决方案(+1行)仍然有效?@Cqnqrd:实际上你的编辑从根本上改变了这个问题。你仍然可以通过一个有点复杂的
查找
来完成这项工作,但这已经超出了我允许自己回答的30秒时间。对不起.-)