Привет, скажем, у меня есть каталог, как это:

/
    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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .