Вы могли использовать один из следующих вариантов:
Сначала каждый - ipset с типом набора "hash:net".
Второй является цепочкой правила iptables с -j RETURN
чтобы каждая сеть пропустила проверку и желаемое действие по умолчанию как последнее цепочечное правило.
Третий должен отметить пакет с некоторым использованием битового флага -j MARK
и соответствующее проигрывание флага (с --set-mark
, --set-xmark
, и т.д.), и затем сделать желаемое действие, если проверка метки удовлетворена (-m mark
и --mark
). Это - самый универсальный вариант, потому что метка могла быть установлена в одной таблице и зарегистрирована другой. OTOH битовая маска метки ограничена 32 битами, которые могли быть недостаточно для сложных правил.
Вы уже близки. Для перемещения файлов home1
, home2
, home3
используйте шаблон глоббинга home?
.
mv home? /home/homeLife/
?
обозначает любой отдельный символ, в то время как *
обозначает любое количество символов (включая ни один).
Можно использовать sed
для обработки файла tbd.txt и создания из него скрипта sed, который удалит строки. Что-то вроде
sed 's=^=/=;s=$=/d=' tbd.txt | sed - file.csv
-121--139651- С помощью zsh
используйте квалификаторы glob:
mv home*(.) dst
перемещает только обычные файлы.
Пока
mv home*(^/) dst
перемещает файлы любого типа , кроме каталогов .
mv home*(^-/) dst
также исключают символьные ссылки на каталоги.
Вы можете использовать находку. Следующее должно работать.
find . -name home\* -type f -maxdepth 1 -exec mv {} /home/homeLife/. \;
Portably вы можете подрезать ваш список спичек глобуса:
set --; cd /home
for f in ./home*
do [ ! -L "$f" ] &&
[ -f "$f" ] &&
set "$@" "$f"
done
[ "$#" -eq 0 ] || mv "$@" ./homeLife
Вы можете использовать Bash Extended Globs:
shopt -s extglob ## activate extglogs if not yet done
mv home!(*Life) homeLife/ ## !(p1|...) = anything except one of the patt
Вы уже близко. Для перемещения ваших файлов домой1
, домой2
, домой3
используйте шаблон глобуса домой?
.
mv home? /home/homeLife/
?
обозначает любой одиночный символ, в то время как *
обозначает любое количество символов (включая ни одного).
Конечно, если бы у вас было только 3 файла, вы могли бы просто сделать
mv home1 home2 home3 homeLife
Иногда проще сделать что-то вручную, чем читать документацию. Если у вас действительно было большое количество файлов с именем home*
, то один трюк, который я использую (, который теперь является частью bash ), состоит в том, чтобы развернуть все совпадения glob, а затем вручную удалить совпадения, которые мне не нужны.. Чтобы развернуть глобус, введите Ctrl + x*после ввода выражения глобуса. Он расширится в командной строке, а затем вы исправите его вручную.
Например, в моем каталоге много «тестовых» файлов, и я хочу преобразовать их все , кроме test2
, в новый файл:
cat test*
Теперь введите Ctrl + x *, и он расширится до
cat test test10 test11 test12 test13 test14 test15 test16 test17 test2 test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 test3 test30 test31 test32 test33 test34 test35 test36 test37 test38 test4 test5 test6 test7 test8 test9 testa testb testbuild testc testd teste testf
Затем наведите курсор назад и удалите test2
с 5 пробелами, а затем добавьте > test_all
в конец командной строки.
cat test test10 test11 test12 test13 test14 test15 test16 test17 test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 test3 test30 test31 test32 test33 test34 test35 test36 test37 test38 test4 test5 test6 test7 test8 test9 testa testb testbuild testc testd teste testf > test_all
Есть куча других фич Ctrl + x , но это единственная, которую я помню.