посмотрите ниже
/ расширенный
grep понимает три различных версии синтаксиса регулярного выражения: “основной”, “расширенный” и “жемчуг”. В GNU grep, нет никакого различия в доступной функциональности между основными и расширенными синтаксисами. В других реализациях основные регулярные выражения менее мощны. Следующее описание относится к расширенным регулярным выражениям; различия для основных регулярных выражений получены в итоге впоследствии. Регулярные выражения Perl дают дополнительную функциональность, и документируются в pcresyntax (3) и pcrepattern (3), но не могут быть доступными в каждой системе.
Так, еще раз.
В GNU grep, нет никакого различия в доступной функциональности между основными и расширенными синтаксисами
Я не думаю, что rsync может разрешить Вашу проблему. Но другой синхронизирующий инструмент смог помогать Вам. Смотрите на унисон.
Унисон имеет много функций и может синхронизировать две папки на различных машинах. Унисон записан в OCaml, который является очаровательным functionional языком.
Rsync является однонаправленным синхронизирующим инструментом. Унисон является двунаправленным синхронизирующим инструментом.
Инструменты копии файла, такие как rsync не собираются помогать Вам легко, так как Вы не хотите копировать любые файлы.
Простой подход списка файлов на сервере A и стирание этих файлов на сервере B является хорошим при большинстве обстоятельств. Легче справиться с произвольными именами файлов если Ваши серверы find
и xargs
команды понимают пустые разделители (Linux, *BSD, Cygwin). От A:
cd ./delete
find . ! -type d -print0 | ssh B 'cd /path/to/stuff && xargs -0 rm -f'
Это может оставить некоторые пустые каталоги. Можно удалить все пустые каталоги (даже те, которые были пусты прежде) с
ssh B 'cd /path/to/stuff && find . -depth -type d -exec rmdir {} + 2>/dev/null'
Если Вы только захотите удалить каталоги, которые существовали на исходной стороне, то необходимо будет использовать список снова:
find . -depth -type d -print0 | ssh B 'cd /path/to/stuff && xargs -0 rmdir'
Если существуют деревья каталогов на, которые содержат много файлов и не существуют на B, это передает целый список файлов для стирания где хорошо подобранное rm -rf
на B сделал бы ту же работу локально над B, но сохранит много пропускной способности в передаче. Это - вид ситуации, где инструмент синхронизации файлов достиг бы хорошего результата. Вы могли работать rsync -nv
и попытайтесь проанализировать вывод, но не легко создать что-то надежное на этом.
rsync --remove-source-files --compare-dest
– Gilles 'SO- stop being evil'
23.08.2013, 02:33
Я тоже хотел сделать это и решил просто написать для этого ruby-скрипт.
Вот так:
https://github.com/saizai/utils/blob/master/rm_dupes_from.rb