Список всех файлов, не начиная с номера

Я хочу изучить все ключевые файлы, присутствующие в моем /proc. Но /proc имеет бесчисленные каталоги, соответствующие запущенным процессам. Я не хочу, чтобы эти каталоги были перечислены. Все имена этих каталогов содержат только числа. Как я плохо в регулярных выражениях, может ли кто-нибудь сказать мне, что regex мне нужно отправить в ls, чтобы сделать его НЕ для поиска файлов/каталогов, у которых есть числа от их имени?

ОБНОВЛЕНИЕ: благодаря всем ответам! Но я бы хотел иметь только ls решение вместо решения ls+grep. Решения ls, предлагаемые до сих пор, похоже, не работают!

6 ответов

Все файлы и каталоги в /proc, которые не содержат чисел (другими словами, исключая каталоги процессов):

ls -d /proc/[^0-9]*

Все файлы рекурсивно находятся под /proc, которые не начинаются с числа:

find /proc -regex '.*/[0-9].*' -prune -o -print

Но это также исключает числовые файлы в подкаталогах (например, /proc/foo/bar/123). Если вы хотите исключить только файлы верхнего уровня с числом:

find /proc -regex '/proc/[0-9].*' -prune -o -print

Держись снова! Разве это не означает, что любые обычные файлы, созданные touch /proc/123 или тому подобное, будут исключены? Теоретически, да, но я не думаю, что вы можете это сделать. Попробуйте создать файл для PID, который не существует:

$ sudo touch /proc/123
touch: cannot touch `/proc/123': No such file or directory


Вам не нужен grep, просто ls:

ls -ad /proc/[^0-9]*

если вы хотите найти всю структуру подкаталога, используйте find:

find /proc/ -type f -regex "[^0-9]*" -print


Используйте grep с -v, который сообщает ему распечатать все строки, не соответствующие шаблону.

ls /proc | grep -v '[0-9+]'


ls /proc | grep -v -E '[0-9]+'


Ради завершения. Вы можете применить ответ Mithandir с помощью find.

find . -name "[^0-9]*" -type f


Следующее регулярное выражение соответствует всем символам, кроме цифр

^[\D]+?$

Надеюсь, что это поможет!

licensed under cc by-sa 3.0 with attribution.