найти: исключить n разных каталогов и m разных файлов, присутствующих на любом уровне, но включить несколько файлов из некоторых исключенных каталогов

Похоже, что метаданные хранятся в журнале systemd, поэтому они исчезли после

rm /var/log/journal/*/*
killall -9 systemd-journald

Обратной стороной является то, что все остальные системные журналы также исчезли.

Возможно, более чистый метод был бы описан в Как очистить journalctl

journalctl --vacuum-time=2d

1
13.12.2018, 10:39
2 ответа

Если вы хотите иметь возможность найти любой файл внутри enhancers, вы не сможете pruneего найти. pruneозначает, что findвообще не спускается в него, поэтому нет никаких шансов, что он сможет найти там файлы. Здесь вы хотите не обрезать их, а исключить любой файл под ними, кроме xyz.js.

Так:

find. \( \
          -path./node_modules -o \
          -path './.git*' -o \
          -path./build \
       \) -prune -o \( \
          ! -path '*/enhancers' ! -path '*/enhancers/*' -o \
          -name xyz.js \
       \) -print

Здесь несколько строк для удобочитаемости.

Замените -printна -exec sh -c 'for file do something with "$file"; done' sh {} +, если хотите что-то сделать с этими файлами.

Или, если вы хотите опубликовать -обработку вывода, используйте -print0и используйте опции -z/ --null/ -0в grep/ xargs/ cut/sort(предполагается, что реализации GNU или совместимы )для их работы с вводом с разделителями NUL -.

1
27.01.2020, 23:42

Вы можете создать сценарий оболочки bash с двумя rsyncкомандными строками с правилами фильтрации,

#!/bin/bash

rsync -Havn \
 --filter="- target" \
 --filter="- node_modules" \
 --filter="-.git" \
 --filter="- build" \
 --filter="- enhancers" \
./ target

rsync -Havn  \
 --filter="+ xyz.js" \
 --filter="+ */" \
 --filter="- *" \
 src target

Этот шеллскрипт довольно легко редактировать, пока он не выдаст хороший результат с -n, что означает «пробный прогон», показывающий только то, что является намерением.

Когда все выглядит правильно, вы можете удалить -nиз двух командных строк и позволить rsyncделать свое дело. Или, может быть, вы довольны текстовым выводом и сохраните его в файл или каким-то образом направите его в другие команды (, чтобы выполнять другие действия, кроме копирования rsync -).

0
27.01.2020, 23:42

Теги

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