cp -r без скрытых файлов

У меня есть два каталога и один пустой.

Первый каталог имеет множество подкаталогов со скрытыми файлами. Когда я cp -r переношу содержимое из первого каталога во второй, скрытые файлы тоже копируются. Любые решения, чтобы избежать их?


person Rahul    schedule 19.07.2012    source источник
comment
это выполнимо, но удалить их после копирования может быть проще   -  person Karoly Horvath    schedule 19.07.2012
comment
да, но копирование скрытых файлов в другие места в моем случае представляет угрозу безопасности.   -  person Rahul    schedule 19.07.2012


Ответы (3)


Вы можете использовать rsync:

rsync -av --exclude=".*" src dest
person Eugene Yarmash    schedule 19.07.2012
comment
Любые накладные расходы по сравнению с cp? - person Rahul; 19.07.2012
comment
@Rahul Мне не приходило в голову сравнивать его, но я думаю, вам не стоит об этом беспокоиться - person Eugene Yarmash; 19.07.2012
comment
Это работает круто! Спасибо чувак! Просто для информации, rsync был бы хорош, когда размер файла большой, но равен cp, если файлы меньше. - person Rahul; 19.07.2012
comment
rsync намного мощнее, чем cp во всех аспектах, поэтому вы должны использовать rsync в качестве инструмента для передачи файлов. - person focus zheng; 27.01.2021

Ты можешь сделать

cp -r SRC_DIR/* DEST_DIR

чтобы исключить все .files и .dirs на уровне SRC_DIR, но все же он будет копировать любые скрытые файлы в подкаталогах следующего уровня.

person Tuxdude    schedule 19.07.2012
comment
Вот именно проблема.. :) - person Rahul; 19.07.2012
comment
Но это работает для GIT-Repos, если вы не хотите копировать весь GIT-Index в .git/... - person Sedat Kilinc; 14.08.2015
comment
Я добавил этот ответ, потому что это решение, которое я искал. Я не хочу исключать всех невидимых вверх по дереву, только невидимых на корневом уровне! - person l008com; 13.03.2018
comment
Другой вариант cp SOURCE/[!.]* TARGET. - person Carel; 10.08.2019

rsync имеет параметр "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

Пример:

rsync -vazC  dir1 dir2
person slitvinov    schedule 19.07.2012
comment
Ты прав. Я попробовал mkdir -p dir1/subdir; коснитесь dir1/subdir/.cvs; rsync -avzC каталог1 каталог2 - person slitvinov; 19.07.2012
comment
rsync -av --exclude=.* src dest прекрасно работает. Обратитесь к ответу Евгения выше. Спасибо, в любом случае! :) - person Rahul; 19.07.2012