
こんにちは、次のようなディレクトリがあるとします:
/
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