我想将一些文件从一个文件夹移动到另一个文件夹。说我有:
├── 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
没有这样做。我怎样才能做到这一点?
答案 0 :(得分:1)
cp -R bar/. foo/
find bar -type f -delete
是的,涉及副本而不是单行,但除非我们在这里谈论大量数据和重复工作,否则这是一个很好的止损。 (请注意bar/.
而不是通常的bar/*
,因为后者会遗漏点文件。)
我怀疑移动文件有一条单行方式,但无论如何保留目录。
答案 1 :(得分:1)
rsync
内置了此功能。
cd bar && rsync --relative [--no-implied-dirs] . ../foo/
如果树中存在符号链接,请使用--no-implied-dirs。
如果您只想移动目标目录已存在的文件,请使用--no-dirs
标记。
rsync不在POSIX工具集中,但它在类似UNIX的机器上很常见,包括OS X和大多数Linuxen。