Рекурсивное сравнение и удаление (без rsync или хеширования)

Как минимум с gawk и mawk , вы можете рассматривать каждый символ как поле, установив пустой разделитель полей. Так, например, вы можете сделать

gawk -F '' '$5 == "*" || $10 == "*"' test.txt

, что приведет к печати совпадающих записей (строк) с использованием правила печати по умолчанию.

Аналогичный трюк в perl (обратите внимание, что поля имеют нулевой индекс)

perl -F'' -ane 'print if $F[4] eq "*" || $F[9] eq "*"' test.txt
2
29.06.2016, 05:31
2 ответа

Это (притворяется) удалит любые различия между папками:

diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | while read f; do echo "removing ${f}"; done;

Если вы хотите удалить различия в A, но не в B, вы можете добавить grep следующим образом:

diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | grep "^folderA/" | while read f; do echo "removing ${f}"; done;

обратите внимание, что вы должны ввести folderA в команду дважды для этого

Чтобы запустить ее по-настоящему, просто замените echo "remove $ {f}"; на rm -f "$ {f}";

0
27.01.2020, 22:46

Вы можете сослаться на эту ссылку эта ссылка. rsync имеет функцию удаления папки, которая не закрывается на live ENV .

rsync -av --delete

0
27.01.2020, 22:46

Теги

Похожие вопросы