Удалить некоторые записи списка или массива в bash

Я хочу применить функцию Python ко всем файлам в подкаталогах данного каталога.

В bash файле .sh я перечисляю все файлы следующим образом:

dir_list=()
while IFS= read -d $'\0' -r file ; do
dir_list=("${dir_list[@]}" "$file")
done < <(find give_directory_Here -mindepth 2 -maxdepth 2 -type d -print0)

Однако есть несколько каталогов с шаблоном, скажем, шаблоном unwanted_pattern, в их названии, которое я хочу удалить из dir_list.

Как я могу это сделать?

Я пробовал вещи здесь, которые не работали для меня: решение 1 из стека по потоку или решение 2 от обмена стеками, и так далее!

В первой строке упоминается Python, но я больше ничего не вижу о Python, и смысл не ясен. Будет ли это так же точно, если вы просто отредактируете это?

Paul Hodges 10.04.2019 16:21
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
1
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Delete some entries of a list or array in bash

Просто зациклите и сопоставьте:

   result=()
   for file in "${dir_list[@]}"
   do
     if [[ "$file" != *"unwanted_pattern"* ]]
     then
       result+=("$file")
     fi
   done
   dir_list=( "${result[@]}" )

Однако это ответ на ваш XY вопрос, а не то, что вы должны делать.

Разумнее было бы вообще не добавлять их, добавив такую ​​проверку в свой цикл, а еще умнее было бы просто find исключить их:

find give_directory_Here -mindepth 2 -maxdepth 2 -type d ! -path '*unwanted_pattern*' -print0

Большое спасибо, насчет XY, если бы я так не поступил, люди сказали бы "а что ты пробовал?", "это не воспроизводимо" и т.д. :) И, вдобавок ко всему, теперь я научился две вещи с 1 вопросом :D

OverFlow Police 10.04.2019 16:14

Другие вопросы по теме