移动文件和文件夹而不删除源文件夹的文件夹结构

移动文件和文件夹而不删除源文件夹的文件夹结构

我想要完成的是将文件(和子文件夹)添加到特定文件夹中时移动它们,但我想在源和目标中保留原始文件夹结构。我相信通过一个例子可以很容易地解释这一点。想象一下以下文件夹/文件结构:

/source/foo/bar1
/source/bar2
/dest

我想存档以下文件夹/文件结构。

/source/foo
/dest/foo/bar1
/dest/bar2

有没有一种方法可以自动化地做到这一点?预先感谢您的回答。

答案1

用于rsync复制所有内容,然后从源中删除除目录之外的所有内容。例如,从此开始(source包含该文件的目录和包含该文件的bar2子目录):foosource/foo/bar2

$ tree source/
source/
├── bar2
└── foo
    └── bar1

1 directory, 2 files

你会运行:

rsync -r source/ dest/

这会创建:

    $ tree dest/
dest/
├── bar2
└── foo
    └── bar1

1 directory, 2 files

现在删除所有非目录source

find source/ -not -type d -delete

或者,如果您find没有-delete,请使用:

find source/ ! -type d -exec rm {} +

要使其自动化,您只需编写一个像这样的小脚本:

#!/bin/sh

source="$1"
dest="$2"

rsync -r "$source"/ "$dest"/ 
find "$source"/ -not -type d -delete

使脚本可执行并使用源目录和目标目录作为参数运行它:

foo.sh /source /dest

相关内容