Список всех файлов, не начинающихся с цифры - PullRequest
7 голосов
/ 01 марта 2012

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

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

Ответы [ 6 ]

8 голосов
/ 01 марта 2012

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

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

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

find /proc/ -type f -regex "[^0-9]*" -print
6 голосов
/ 01 марта 2012

Все файлы и каталоги в /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
2 голосов
/ 01 марта 2012

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

 ls /proc | grep -v '[0-9+]'
1 голос
/ 01 марта 2012

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

0 голосов
/ 01 марта 2012

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

  find . -name "[^0-9]*" -type f
0 голосов
/ 01 марта 2012

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

^[\D]+?$

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

...