У меня есть такая структура папок:
MAT11NA_09_XX_XX_XXX
MAT11NA_09_XX_XX_XXXL
MAT11NA_11_XX_XX_XXX
MAT11NA_11_XX_XX_XXXL
MAT11NA_10_XX_XX_XXX
MAT11NA_10_XX_XX_XXXL
Я хочу скопировать с этого сервера на другой только папку MAT11NA_09_XX_XX_XXX
, но нет MAT11NA_09_XX_XX_XXX
L. Когда я закончу с этим, я хочу скопировать MAT11NA_09_XX_XX_XXX
L но нет MAT11NA_09_XX_XX_XXX
. Эта часть MAT11NA_09_
не меняется, L в конце тоже не меняется.
То же и с остальными папками ...
Как мне сделать это в командной строке Unix / Linux?
Спасибо.
С буквой "L"
cp -r *L destination
Без буквы "L"
cp -r *[^L] desyination
Я знаю, что это глупо, но, по крайней мере, все прямо.
Это скопирует все файлы / каталоги, заканчивающиеся на L:
cp `ls | grep -E 'L$'` DEST
Это скопирует все файлы / каталоги НЕ заканчивается на L:
cp `ls | grep -vE 'L$'` DEST
Замените DEST на пункт назначения.
Для тех, кому нужна буква L, просто сделайте:
scp -r MAT*L destserver:/whatever/
Делать те, которые делают не есть L, вам нужны расширенные Globs с bash:
shopt -s extglob
scp -r ./!(MAT*L) destever:/whatever/
Я не тестировал это с помощью scp, но это примерно способ сделать это. Вы также можете использовать команду find с чем-то вроде (для тех, у кого нет L).
find . ! -iname 'MAT*L' ! -iname '.*' -print0 | xargs -0 tar zcf foo.tar.gz
а затем просто скопируйте файл tar.
Хорошо, я перепробовал их все.
"scp -r MAT*L destserver:/whatever/
"- похоже, это работает.
shopt extglob
scp -r ./!(MAT*L) destever:/whatever/
Для этого я выполнил команду "shopt extglob
", потом сделал копию. Но у меня такая ошибка"-bash: !: event not found
"... значит, это не работает.
Я попробовал также первый ответ ... Структура папок примерно такая:
folder1
MAT11NA_09_XX_XX_XXX
MAT11NA_09_XX_XX_XXXL
MAT11NA_11_XX_XX_XXX
MAT11NA_11_XX_XX_XXXL
MAT11NA_10_XX_XX_XXX
MAT11NA_10_XX_XX_XXXL
Я хочу взять MAT11NA_09_XX_XX_XXX
папки и положить в папку на другом сервере.
Тогда я хочу взять MAT11NA_09_XX_XX_XXXL
папку и поместите в другую папку на другом сервере.
Тогда ... я хочу взять MAT11NA_11_XX_XX_XXX
папки и поместите в папку (отличную от папки, в которую я положил MAT11NA_09_XX_XX_XXX
) на другом сервере.
То же самое для MAT11NA_11_XX_XX_XXXL
...
Я не хочу помещать ВСЕ папки L в одну папку с другого сервера, и я не хочу помещать ВСЕ папки, отличные от L, в другую папку с другого сервера.
Надеюсь, на этот раз вы понимаете, извините. Спасибо.
ОБНОВИТЬ
Хорошо, после последнего ответа я использую их, и, похоже, они работают:
scp -r MAT11NA_09_*L contentuser@/destination
scp -r MAT11NA_09_*[^L] contentuser@/destination