src /foo/bar/.jpgをdest /foo/.jpgに同期するrsyncジョブを作成しようとしています。中間ディレクトリはスキップし、最上位ディレクトリは維持します。 --include --exclude オプションを使用してこれを行う方法があると確信していますが、まだ見つかりませんでした。
これがsrc構造です。
/Volumes/ExtHDD
└── YYMMDD
├── foo1
│ └── bar
├── foo2
│ └── bar
└── foo3
├── image1.jpg
├── image2.jpg
├── image3.jpg
└── image4.jpg
それが私の究極の目標です。
/Volumes/OS/Users/user/Dropbox
└── YYMMDD
├── image1.jpg
├── image2.jpg
├── image3.jpg
└── image4.jpg
私は努力しました。
rsync -avhW --include='*.jpg' --exclude='*' src dest
ところで.jpgファイルも見つからず、除外オプションが優先であるようですが、フィルタには動作順があると思います。
ベストアンサー1
これらのファイルを直接コピーできます。
src='/Volumes/ExtHDD'
dst='/Volumes/OS/Users/user/Dropbox'
dir='YYMMDD'
mkdir -p "$dst/$dir"
rsync -av "$src/$dir"/*/*.jpg "$dst/$dir/"
if はYYMMDD
一連のディレクトリを表し、ループを使用してディレクトリをナビゲートします。
for dir in "$src"/??????
do
mkdir -p "$dst/${dir##*/}"
rsync -av "$dir"/*/*.jpg "$dst/${dir##*/}/"
done