这是我的情况。我本地的 3 个目录中有很多文件。我在服务器上有这些文件的子集 + ~30 个更有条理的 10 个目录。我想移动本地计算机上的文件以匹配它们在服务器上的目录(理想情况下我会同时复制大约 30 个附加文件,但如果没有,我可以手动执行此操作)。有人对如何实现这一目标有任何建议吗?
好吧,让我举例说明。我的本地文件分为 3 个目录: [ AB .... F ] [ GH ... P ] [ QR .... W ]
我的服务器有 [ ABC ] [ DEF ] [ GHIJK ] [ LMNOP ] [ QR ] [ STU ] [ VWXYZ]
我想根据它们在服务器上的目录将本地文件移动到相应的本地目录中(不传输任何文件) [] 是一个目录,字母是一个文件。
答案1
如果文件之间没有重名
- 从服务器获取文件列表(通常是 的输出
find
,相对于它们的公共目录),并将其传输到本地 - 在本地,将所有文件移动到同一目录(使用
find [...] -exec mv -t some/staging/directory {} \;
在本地,以 CWD 作为公共目录,执行如下命令:
while read f; do mkdir -p $(dirname "$f") mv -v "some/staging/directory/$(basename $f)" "$f" done < files_on_server.lst