Попробуйте следующее:
ip -o link show
Список доступных портов для каждой сетевой карты
lspci | grep Eth | awk -F ':' '{print $NF}' | uniq -c
2 Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
4 Intel Corporation I350 Gigabit Network Connection (rev 01)
В Bash, если у вас уже есть пара упорядоченных массивов с соответствием между элементами от одного -до -one, использование цикла для выполнения команды для каждой пары из них является простым:
for i in "${!sources[@]}"; do
echo rsync -av -- "${sources[i]}" "${destinations[i]}"
done
(Удалите echo
для фактического копирования ваших файлов, когда вы будете довольны результатом, который вы видите ).
Префикс !
, применяемый к переменной-массиву, расширяет ее до списка ее индексов.
Я опустил параметр -r
в rsync
, потому что он подразумевается -a
.
Списки путей, хранящиеся в текстовых файлах, по одному на строку (, предполагая, конечно, что ваши пути к файлам не могут содержать никаких символов новой строки ), могут быть прочитаны в массивы с помощью:
mapfile -t surces <source.txt
mapfile -t destinations <destination.txt
mapfile
(или эквивалентныйreadarray
)стандартный ввод разбивается на новые строки (или разделитель, явно указанный с помощью опции -d
). Опция -t
предписывает удалить сам разделитель, который в противном случае был бы сохранен как последний символ каждого элемента массива.