YuraRimskiy |
|
Темы:
9
Сообщения:
30
Участник с: 24 декабря 2017
|
Почему-то не срабатывает команда
если в /p/a/t/h/ лежат только скрытые файлы и папки. Пишет: cp: не удалось выполнить stat для '/p/a/t/h/*': Нет такого файла или каталога Нужно СОДЕРЖИМОЕ ОДНОГО КАТАЛОГА скопировать в другой. В инете нашёл способ с добавлением точки.
Работает, но я его не понимаю. Он какой-то недокументированный. Ни в хелпе, ни в мане про это ничего не сказано. Как это всё-таки правильно делать? |
redix |
|
Темы:
34
Сообщения:
3433
Участник с: 11 марта 2013
|
rsync попробуйте, еще для него есть шкурка, называется grsync. Он даже линки умеет, и можно включать\выключать рекурсию.
In Tux We Trust
|
vs220 |
|
Темы:
22
Сообщения:
8070
Участник с: 16 августа 2009
|
YuraRimskiyСмотрите "Globbing" вот на русском www.linuxcookbook.ru/books/absguide/ch18s02.html#FTN.AEN12544 |
symon2014 |
|
Темы:
3
Сообщения:
97
Участник с: 04 марта 2017
|
Попробуйте так , /t/o - желательно создать заранее.
|
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
"*" - не разыменовывает скрытые(те что начинаются с точки) файлы и каталоги все файлы кроме скрытых копируются из каталога 1 в каталог 2 копируются только скрытые файлы из каталога 1 в каталог 2 копируются все файлы (скрытые и не скрытые)YuraRimskiyтам работает не документация а логика ) "." - также означает и текущий каталог (можно увидеть командой ls -la); к слову, родительский каталог обозначается двумя точками(..) ваша команда эквивалентна то есть, вы копируете конкретный каталог - "1/." со всем его содержимым, которое "естественно" копируется в текущий(.) каталог 2YuraRimskiyкоманды и эквивалентны (относительно результата) хотя и работают немного по разномуи раз они делают то что от них ожидается то и "правильными" будут они оба ) |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Под шаблон .* попадут, в том числе, . (текущий каталог) и .. (родительский каталог). Очень не советую так делать. На самом деле, всё просто :) 1) вместо всех этих --recursive и т.д., используйте cp -a 2) чтобы шаблон * включал в себя "скрытые" файлы и каталоги, нужно просто переключить поведение шаблонов shopt -s dotglobНет, . и .. под этот шаблон не попадут. Чтобы вернуть нормальное поведение в текущей сессии баша, опцию можно отключить той же командой с ключом -u shopt -u dotglob Подробнее об опциях шаблонов баша смотрите, например, тут. Из других интересных возможностей – можно отключить чувствительность шаблонов к регистру: В этом примере будут выведены файлы, оканчивающиеся и на .jpg, и на .JPG
|
SirKittyKnight |
|
Темы:
5
Сообщения:
51
Участник с: 17 декабря 2017
|
Как вариант Текущий и родитель не попадают, только файлы и папки, в т.ч. скрытые. Не знаю, насколько феншуен вариант в целом, но пользовался много раз и без проблем.
|
red |
|
Темы:
30
Сообщения:
1517
Участник с: 31 августа 2011
|
Natrioчто попадает, а что не попадает под шаблон при копировании можно легко проверить, для этого и существует параметр --verbose например:
скопируем содержимое каталога 1 в 2:
скорее всего в утилите cp уже заранее учтено то что копировать каталоги . и .. ненужно если это не указанно явно во втором способе мы указали явно копировать каталог . но так как каталог 2/. это тот же каталог 2 то и результат будет одинаков
|
Vadim |
|
Темы:
280
Сообщения:
1909
Участник с: 20 ноября 2013
|
redБольшое спасибо,очень мне пригодилось
Linux Forever!
|
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
red, уважаю ваше упорство :) "Звёздочка" без шаманства захватывает "скрытые" файлы и каталоги, достаточно разрешить ей это: shopt -s dotglob Ваша гипотеза об автоматическом "выкидывании" . и .. командой cp не оправдывается (тем более, что она получает от баша не шаблоны, а уже раскрытый список путей, явно содержащий все варианты раскрытия): пример явно делает много лишнего.Что касается второго, копирующего 1/. , он действительно работает, хотя и очень неочевидным способом, то есть в данном случае как раз имеет место "костыль" внутри команды cp: путь "каталог/." (формально эквивалентный "каталог" ) воспринимается как указание копировать содержимое вместо самого каталога, если каталог назначения существует (если не существует, всё работает так же, но уже вполне ожидаемо). P.S. Кроме того, костыль внутри cp никаки не поможет с другими командами, к примеру mv так уже не умеет: Команда scp воспримет "путь/". как эквивалент "путь", и сработает почти как cp, с одним забавным отличием – прежнее содержимое каталога назначения будет уничтожено.
|