Здравствуйте, хабражители.
Не судите строго, я новичёк в linux-е и это мой первый пост на хабре, но может кому-то похожему на меня он окажется полезным.
Столкнулся с необходимостью решить задачу, описанную в заголовке. Готового решения не нашёл. Написал sh скрипт (cpexclude.sh), который сначала копирует всё, а потом удаляет лишнее:
Добавил его в ~/.bashrc
Пользуюсь время от времени.
Если у кого-нибудь на уме есть более приемлемое решение, милости прошу.
Upd. Я не до конца описал задачу. Есть ещё необходимость в том, чтоб сохранялась структура поддиректорий копируемой директории и чтоб копировались сами поддиректории, а не только находящиеся в них файлы.
Upd2. В комментарих подсказали:
Не судите строго, я новичёк в linux-е и это мой первый пост на хабре, но может кому-то похожему на меня он окажется полезным.
Столкнулся с необходимостью решить задачу, описанную в заголовке. Готового решения не нашёл. Написал sh скрипт (cpexclude.sh), который сначала копирует всё, а потом удаляет лишнее:
#!/bin/bash if [ $# -lt 3 ] ; then echo "cpexclude usage: pathFrom pathTo excludeRegex" exit 0 fi pathFrom=$1 pathTo=$2 excludeRegex=$3 # Copy everything echo `cp -a $pathFrom/. $pathTo` # Delete by excludeRegex echo `find $pathTo -regex $excludeRegex -delete`
Добавил его в ~/.bashrc
alias cpexclude='/path/to/cpexclude.sh'
Пользуюсь время от времени.
Если у кого-нибудь на уме есть более приемлемое решение, милости прошу.
Upd. Я не до конца описал задачу. Есть ещё необходимость в том, чтоб сохранялась структура поддиректорий копируемой директории и чтоб копировались сами поддиректории, а не только находящиеся в них файлы.
Upd2. В комментарих подсказали:
rsync -r --exclude=PATTERN from/ to/
SRC=~/work/soruce; DEST=~/work/test; REGEXP=js; pushd $SRC; for I in $(find ./ | grep -v "$REGEXP"); do if [ -d $I ]; then mkdir $DEST/$I; else cp $I $DEST/$I; fi; done; popd 2>/dev/null
