Сравните два указателя, исключая расширения файлов

У меня есть два каталога: dir1 и dir2 В dir1 у меня есть файлы вроде:

  • blacklist1.dat.bz2
  • blacklist2.dat.bz2
  • blacklist3.dat.bz2

и так далее.

В dir2 у меня есть зашифрованные файлы вроде:

  • blacklist1.dat.bz2.enc

Я хотел бы зашифровать все файлы, которые (сравнение dir1 с dir2) не существует на dir2. Для шифрования файла я использую Openssl: – openssl enc -aes-256-cbc -in dir1 / file -out dir2 / file.enc -k Пароль

Мне это понравилось, но мне не хватает условия if

for i in /dir1/*; do name=$(basename "$i") test=$name.enc if [ **<$test doesn't exist on dir2>** ]; then openssl enc -aes-256-cbc -in dir1/name -out dir2/name.enc -k Password fi done 

Я хотел бы рекомендовать использовать что-то вроде rsync, чтобы определить список отсутствующих / разных файлов, а затем использовать этот список. Однако это не будет легко работать с вашими потребностями.

Вы также можете рассмотреть возможность использования find, чтобы помочь с возможной рекурсией. Даже отличные файлы из двух каталогов с некоторыми командами sed и grep могут предоставить вам список файлов, который вы хотите.