Есть ли regex
, чтобы найти все файлы, которые не содержат определенный символ? Я знаю, что есть много, чтобы найти строки, содержащие совпадения, но я хочу что-то, что найдет все файлы, которые не содержат мое соответствие.Поиск имен файлов без заданного символа
ответ
для Баш - перечислить все файлы в СПРАВОЧНИК:
shopt -s extglob
ls !(*.*)
Установка extglob требуется дать возможность! что отрицает . аргумент ls.
Использование ls
и sed
заменить все имена файлов без расширения (т.е. не содержащий .
) с NoExtension
:
ls | sed -e 's/^[^.]*$/NoExtension/g'
замена имен файлов, которые имеют расширение с их расширением:
ls | sed -e 's/^[^.]*$/NoExtension/g' -e 's/.*\.\(.*\)/\1/'
Добавить 'sort | uniq -c | sort -n' до последней команды, чтобы получить отсортированный счетчик. Более короткая альтернатива: '/\ ./! s/$/NoExtension /. s /.*\.// '. – Thor
И решение awk, для хорошей меры.
ls | awk '$0 !~ /\..+$/{a++}END{print a}'
Это печатает подсчеты, а не имя файла должно быть 'ls | awk '!/\ .. + $ /' ', но вы не хотите разбирать вывод' ls' вообще. –
Мой скрипт awk (счетчик) соответствует его краткому (подсчету файлов без расширения в каталоге) перед редактированием: количество файлов. Для задачи под рукой ** ls ** вполне адекватно, я не разбираю ничего, кроме имен файлов. – tink
Разбор 'ls' никогда не безопасен http://mywiki.wooledge.org/ParsingLs –
Это может работать для вас (найти, GNU СЭД & туалет):
find . -type f | sed -rn '\|.*/\.?[^.]+$|w NoExtensions' && wc -l NoExtensions
Это дает вам количество и список.
N.B. dot
файлы без расширений включены.
Вы должны отказаться от всех ответов, которые анализируют вывод ls
, чтобы прочитать почему-то here. Инструмент find
идеально подходит для этого.
# Show files in cwd
$ ls
file file.txt
# Find the files with an extension
$ find -type f -regex '.*/.*\..*$'
./file.txt
# Invert the match using the -not option
$ find -type f -not -regex '.*/.*\..*$'
./file
- 1. Поиск имен файлов
- 2. Поиск имен файлов в каталоге
- 3. Поиск только для имен файлов
- 4. Поиск имен файлов в AppCode
- 5. Поиск точного числа заданного символа в начале строки
- 6. Шаблон для заданного символа
- 7. Правильно расширяя пространства имен xml без заданного конечного символа в допустимые URI
- 8. Разбиение имен файлов с использованием символа разделителя системных файлов
- 9. Поиск определенного символа в строках
- 10. Отображение значения ASCII заданного символа
- 11. Поиск имен файлов, содержащих определенные строки
- 12. Поиск совпадающих имен файлов между каталогами
- 13. Поиск имен файлов в рамках данного соглашения
- 14. Поиск файлов без определенного расширения
- 15. Поиск сложности заданного кода
- 16. поиск файлов, содержащих «#» в расширениях имен файлов в окнах 7
- 17. Поиск нескольких сотен имен файлов в нескольких сотнях файлов журнала
- 18. Как получить подстроку от заданного символа?
- 19. Поиск повторяющегося символа в строке
- 20. Building Boost без декораций имен файлов?
- 21. Hadoop перевернутой индекс без повторения имен файлов
- 22. заголовков файлов без явного написания имен
- 23. grep перечисление имен файлов без содержания
- 24. Regex для имен файлов без использования
- 25. Сортировка имен файлов без ведущих нулей
- 26. Удалить все символы после определенного символа в нескольких имен файлов
- 27. Как удалить первые 3 символа имен нескольких файлов?
- 28. Использовать Automator/Applescript для обрезания имен файлов после определенного символа?
- 29. Очистка символа (?) Для создания нескольких имен файлов в C++
- 30. Разрешительные имена имен файлов
Без 'ls', создайте массив:' no_ext_files = (! (*. *)); num = "$ {# no_ext_files [@]}" ' –
@suspectus: Я думаю, что ваше решение (включая ** ls **) не работает, если каталог имеет подкаталоги. – tink