find -L . \
\( -type d \
\( -path "*/ignore" -o -path "*/indeed" -o \
\( -path "*/subdir/*" ! -path "*/subdir/save" \
\) \
\) \
\) \
-prune -o -print
Если Вы хотите дополнительный фильтр (как -name "*.ext"
) необходимо исправить это прежде -print
. Последняя часть затем похожа на это
-prune -o \( -name "*.ext" \) -print
Обратите внимание, что я изменил имена для более легкого writeability и удобочитаемости. Имена, запускающиеся с i
должны быть проигнорированы. Имена, запускающиеся с s
должны быть показаны. Имена, заканчивающиеся в file
файлы.
Мое дерево похоже на это:
$ find -printf "%y %p\n"
d .
d ./base
d ./base/subdir
d ./base/subdir/inform
f ./base/subdir/inform/imagefile
d ./base/subdir/isolate
f ./base/subdir/isolate/individualfile
f ./base/subdir/whatwhatinthefile
d ./base/subdir/save
f ./base/subdir/save/soundfile
f ./base/superfile
d ./base/indeed
f ./base/indeed/itemfile
d ./base/show
f ./base/show/startfile
d ./base/ignore
f ./base/ignore/importantfile
Вывод вышеупомянутой команды:
.
./base
./base/subdir
./base/subdir/whatwhatinthefile
./base/subdir/save
./base/subdir/save/soundfile
./base/superfile
./base/show
./base/show/startfile
Отметьте это whatwhatinthefile
в base/subdir
. Если Вы не хотите файлы в base/subdir
затем необходимо исключить их явно. Я попробовал, но командная строка стала слишком ужасной.
В зависимости от Вашего варианта использования могло бы быть легче определить функцию оболочки как это:
contrivedfind() {
find -L . \
\( -type d \
\( -path "*/ignore" -o -path "*/indeed" -o -path "*/subdir" \
\) \
\) \
-prune -o -print
find -L ./base/subdir/save
}
Вывод теперь:
.
./base
./base/superfile
./base/show
./base/show/startfile
./base/subdir/save
./base/subdir/save/soundfile
Единственной другой вещью, отличающейся до теперь, являются пропавшие без вести ./base/subdir
запись. Но я думаю, что это не имеет значения в Вашем случае, потому что Вы хотите отфильтровать для файлов так или иначе.
Как, прежде чем необходимо будет поместить любой дополнительный фильтр перед -print
в первом find
и на этот раз также в конце второго find
.
Шлюз по умолчанию обычно обновляется DHCP.
Однако в вашем /etc/network/interfaces
вы утверждаете, что для br0
инет является статическим. Вы явно указываете IP-адрес, сетевую маску и шлюз. Таким образом, для этого интерфейса не выполняется запрос DHCP.
Если вы хотите обновить шлюз по умолчанию, укажите как:
auto br0
iface br0 inet dhcp
bridge_ports eth0