Копирование файлов результатов сравнения

Как уже было сказано в предыдущем ответе, вы можете использовать небольшой DNS-сервер на своем raspi и делать это таким образом. Если вы не хотите, и если ваше разрешение имени настроено на поиск / etc / hosts в первую очередь, вы можете использовать подобный сценарий, чтобы определить, что делать

domain=mydomain.com  # modify as needed
domain_INT_IP=192.168.1.10  #modify as needed
home_netw=192.168 # first two octets, modify as needed but probably not
NIC=eth0  # modify as needed
myIP=$(ifconfig ${NIC}|grep "inet addr"|cut -d: -f2|cut -d" " -f1)
my_netw=$(echo ${myIP}|cut -d. -f1-2)
if [ "${my_netw}" == ${home_netw} ]
then
  echo ${domain_EXT_IP}"  "${domain} >> /etc/hosts
else
  grep "${domain}" /etc/hosts >/dev/null; r=${?}
  if [ ${r} -eq 0 ]
  then
    sed -i -e "/${domain}/d" /etc/hosts
  fi
fi

, он в основном вставляет локальный IP-адрес в / etc / hosts , когда он обнаруживает, что IP-адрес вашего устройства находится внутри вашей домашней сети. И удаляет эту строку, когда вы находитесь вне дома, позволяя вам использовать любой DNS-сервер, настроенный в вашем файле /etc/resolv.conf .

0
03.06.2019, 17:54
2 ответа

Вы можете использовать функции вычитания массива и расширения фигурных скобок zsh , например:

Настройка:

$ tree.
.
├── folderA
│   ├── file0
│   ├── file1
│   └── file2
├── folderB
│   ├── file2
│   ├── file3
│   └── file4
└── folderC

3 directories, 6 files


cd folderA
A=(*)
cd../folderB
B=(*)
cd..

Исполнение:

cp folderA/${^A:|B} folderB/${^B:|A} folderC

Результат:

$ tree folderC
folderC
├── file0
├── file1
├── file3
└── file4

0 directories, 4 files

Два этапа установки создают массивы (с именами Aи B), которые содержат имена файлов в папках A и B соответственно.

Шаг выполнения запрашивает cpскопировать расширение массива Aза вычетом массива B, все с префиксом folderA, а также соответствующее расширение массива Bза вычетом A. массив (с префиксомfolderBfolderC.

0
28.01.2020, 03:37

Хакерское решение с использованием diff, sedиxargs:

Тестовая установка:

$ mkdir folderA folderB folderC
$ touch folderA/fi\ le1 folderA/file2 folderA/file3 folderB/file3 folderB/file4
$ diff -rq folderA folderB
Only in folderA: fi le1
Only in folderA: file2
Only in folderB: file4

Теперь мы используем sedдля фильтрации всех строк, начинающихся со строки Only in folderA:, и меняем эту часть на folderA/, чтобы сформировать относительное имя файла с кавычками('folderA/fi le1'). Затем эта строка передается в xargsи используется для копирования этого файла в folderC.

$ diff -rq folderA folderB | sed -n "s/^Only in \(folderA\): \(.*\)/'\1\/\2'/p" | xargs cp -vt folderC
'folderA/fi le1' -> 'folderC/fi le1'
'folderA/file2' -> 'folderC/file2'

То же, что и выше дляfolderB:

$ diff -rq folderA folderB | sed -n "s/^Only in \(folderB\): \(.*\)/'\1\/\2'/p" | xargs cp -vt folderC
'folderB/file4' -> 'folderC/file4'
0
28.01.2020, 03:37

Теги

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