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秒时间。对不起.-)