Используйте bash для определения файлов в Directrory A, которые не существуют в каталогах B и C - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть каталог (Каталог A) с файлами.

Каталоги B и C содержат файлы из каталога A (в C нет файлов в C и наоборот).

Как я могу перечислить файлы в каталоге A, которых нет ни в каталогах B, ни C?

1 Ответ

0 голосов
/ 05 сентября 2018

Если вам не нужно быть быстрым в случаях с очень большим объемом:

for f_path in a/*; do f=${f_path#a/}
  [[ -e "b/$f" || -e "c/$f" ]] && continue
  printf '%s\n' "$f"
done

Если вы делаете и имеете GNU comm, find и sort, посмотрите следующее - конечно, замените tr в конце кодом, который фактически читает Список, разделенный NUL, если вы хотите безопасно обрабатывать все возможные имена файлов:

comm -z23 <(find a -maxdepth 1 -printf '%P\0' | sort -z) \
          <(find b c -maxdepth 1 -printf '%P\0' | sort -z) \
  | tr '\0' '\n'

Подробнее об использовании comm см. BashFAQ # 36 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...