Ответ 1
find . ! -name "*.xml" -type f
Используя bash, как найти файлы в структуре каталогов, кроме файлов *.xml? Я просто пытаюсь использовать
find . -regex ....
regexe:
'.*^((?!xml).)*$'
но без ожидаемых результатов...
или существует ли другой способ для достижения этого, то есть без соответствия регулярного выражения?
find . ! -name "*.xml" -type f
find . -not -name '*.xml'
Должен сделать трюк.
Sloppier, чем предыдущие решения find
, и он работает больше, чем нужно, но вы могли бы сделать
find . | grep -v '\.xml$'
Кроме того, это дерево исходного кода? Возможно, у вас есть весь исходный код и некоторый XML в дереве, но вы хотите получить только исходный код? Если вы использовали ack, вы могли бы сделать:
ack -f --noxml
с bash:
shopt -s extglob globstar nullglob
for f in **/*!(.xml); do
[[ -d $f ]] && continue
# do stuff with $f
done
Вы также можете сделать это с помощью или-ring следующим образом:
find . -type f -name "*.xml" -o -type f -print
Попробуйте что-то вроде этого для решения регулярных выражений:
find . -regextype posix-extended -not -regex '^.*\.xml$'