|
|
|
Копирование файлов.
|
|||
|---|---|---|---|
|
#18+
Как рекурсивно скопировать каталог без скрытых файлов и каталогов? Команда cp как-то с паттернами совсем не дружит. Хотя может я не разобрался. Попытался сделать при помощи команды find, но не могу написать паттерн, который находит все файлы, кроме скрытых. find -name ".*" вот так все скрытые нахожу find -name "^.*" вот так ничего не находит, хотя должен найти все, кроме скрытых Сделал так - find -path '*/.*' -prune -o -print но хочется все-таки разобраться с паттернами. Или с ними такого не сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 14:31 |
|
||
|
Копирование файлов.
|
|||
|---|---|---|---|
|
#18+
wessen... Команда cp как-то с паттернами совсем не дружит. Хотя может я не разобрался. ...Действительно, "не дружит". С ними "дружит" shell и программа cp в качестве аргументов получает уже "раскрытые" шаблоны. Это одна из удачных "фишек" Unix-а - не нужно дублировать работу с шаблонами в прикладных программах или скриптах. wessen Попытался сделать при помощи команды find, но не могу написать паттерн, который находит все файлы, кроме скрытых. find -name ".*" вот так все скрытые нахожуИ это правильноwessen find -name "^.*" вот так ничего не находит, хотя должен найти все, кроме скрытыхА это с чего Вы взяли ?Тогда уж Код: plaintext В общем, man find, man 7 glob и т.д. wessen Сделал так - find -path '*/.*' -prune -o -print но хочется все-таки разобраться с паттернами.Хочется - разбирайтесьwessen Или с ними такого не сделать?А почему Вы считаете, что Ваш последний вариант без шаблонов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:13 |
|
||
|
Копирование файлов.
|
|||
|---|---|---|---|
|
#18+
avb1003Действительно, "не дружит". С ними "дружит" shell и программа cp в качестве аргументов получает уже "раскрытые" шаблоны. Это одна из удачных "фишек" Unix-а - не нужно дублировать работу с шаблонами в прикладных программах или скриптах. Вот команда rm дружит и еще куча команд дружит, а cp не дружит и для меня это было не так явно. avb1003 А это с чего Вы взяли ?Тогда уж Код: plaintext В общем, man find, man 7 glob и т.д. Так находятся все файлы и скрытые тоже. Пытался так Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. то есть все пути начинаются с точки и отсекается соответственно все. В общем, если кто-то подскажет, как убрать ведущие символы ./ из вывода команды find, буду очень признателен. avb1003 А почему Вы считаете, что Ваш последний вариант без шаблонов? Он с шаблонами, я имел в виду, что отсечение не нужных файлов производится опцией prune, а не самим шаблоном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 11:26 |
|
||
|
Копирование файлов.
|
|||
|---|---|---|---|
|
#18+
wessen... Вот команда rm дружит ... Вы таки проверили это ? Попробуйте Код: plaintext 1. 2. 3. 4. 5. Так находятся все файлы и скрытые тоже. Не знаю. У меня работает(bash-3.2.48+ find-4.4.0 или bash-2.05+find-4.1.7): Код: plaintext 1. 2. 3. 4. 5. 6. 7. Пытался так Код: plaintext Естественно. Шаблон ".*" означает произвольный символ повторенный произвольное число раз. Вот если набрать "\..*", то тогда можно найти все файлы без точки, если искать так: Код: plaintext 1. то есть все пути начинаются с точки и отсекается соответственно все. В общем, если кто-то подскажет, как убрать ведущие символы ./ из вывода команды find, буду очень признателен. ... См. предыдущий мой примерvessel ... Он с шаблонами, я имел в виду, что отсечение не нужных файлов производится опцией prune, а не самим шаблоном. Странно, что Вы не поняли как работает опция -prune. Последний Ваш вариант был хорошим примером ee применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 17:19 |
|
||
|
Копирование файлов.
|
|||
|---|---|---|---|
|
#18+
avb1003 find `pwd` | grep -v "\..*" Я кажется понял, в чем я тупил. Для опции name команды find передается некий shell pattern, а вот для grep передается именно полноценное регулярное выражение. Оно так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 11:28 |
|
||
|
Копирование файлов.
|
|||
|---|---|---|---|
|
#18+
wessenavb1003 find `pwd` | grep -v "\..*" Я кажется понял, в чем я тупил. Для опции name команды find передается некий shell pattern, а вот для grep передается именно полноценное регулярное выражение. Оно так?Примерно так. Но точнее: параметры опций типа -name, рассматриваются (программой find) как shell pattern, а шаблон команды gnu grep по умолчанию трактуется/рассматривается(программой grep) как "basic regular expression", а с опцией -E как "extended regular expression". В других UNIХ-ах для "extended regular expression" существует(или существовала) отдельная команда egrep. Была еще fgrep (grep -F). Все это разные диалекты языка регулярных выражений. Свои версии (диалекты) имеют perl, awk, tcl и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 18:39 |
|
||
|
|

start [/forum/topic.php?fid=25&fpage=123&tid=1485803]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 406ms |

| 0 / 0 |
