如何僅複製某些檔案和子目錄

如何僅複製某些檔案和子目錄

嗨,假設我有一個這樣的目錄:

/
    my_work
               /dir1
                    keepdir1.ddd
                    keepdir2.ddd
                    file.cfg
                    (lots of files and directories I don't want)
               /dir2
                    (same layout as dir 1)

所以我想複製目錄“my_work”和所有“dir1”、“dir2”等子目錄。但在每個文件中,我只想保留某些文件和某些目錄。在我保留的目錄中,我想遞歸地包含所有內容。

這是我到目前為止所嘗試過的,但似乎沒有什麼可以複製的:

rsync -rl --include-from=~/rsync_include /my_work ~/backup

rsync_include 的內容為:

+ *file.cfg
+ *keepdir*/*
- *

答案1

除非您忘記提供重要信息,否則以下腳本將起作用。

#!/usr/bin/env bash

for DIR in my_work/* ; do
    mkdir -pv dest/"$DIR"
    cp -av "$DIR"/*.cfg "$DIR"/keepdir* dest/"$DIR"
done

範例輸出,使用不適用的通配符產生訊息:

dest
dest/my_work
dest/my_work/dir1
my_work/dir1/file.cfg -> dest/my_work/dir1/file.cfg
my_work/dir1/keepdir1.ddd -> dest/my_work/dir1/keepdir1.ddd
my_work/dir1/keepdir2.ddd -> dest/my_work/dir1/keepdir2.ddd
dest/my_work/dir2
my_work/dir2/file.cfg -> dest/my_work/dir2/file.cfg
cp: my_work/dir2/keepdir*: No such file or directory
dest/my_work/dir3
cp: my_work/dir3/*.cfg: No such file or directory
cp: my_work/dir3/keepdir*: No such file or directory

相關內容