Как фильтровать файлы в каталоге в Linux - PullRequest
0 голосов
/ 03 февраля 2012

Как отобразить типы всех файлов в личном каталоге в домашнем каталоге
что:

  1. не начинайте с определенных букв, таких как a, k
  2. и третья буква в их названии не цифра и не буква (верхний или нижний регистр)

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Попробуйте grep с регулярными выражениями:

ls -1 | grep -ve "^a\|^k\|^..[0-9]\|^..\w" | cut -d . -f 2

-v: вето -e: использовать регулярные выражения

-1 - убедитесь, что у вас нет нескольких файлов в одной строке.

Регулярное выражение означает:

  1. ^a\|^k: нет a или k в начале
  2. ^..[0-9]: без номера в третьей позиции (. является подстановочным знаком для одной позиции)
  3. ^..\w: нет слова (символа или _) на третьей позиции.

Это немного длиннее, но я бы посчитал, что это хороший способ погрузиться в регулярные выражения. Для получения более подробной информации о регулярных выражениях смотрите, например, здесь .

Команда cut ищет разделитель . и печатает вторую его часть (-f 2).

0 голосов
/ 03 февраля 2012

Если под "типами" вы подразумеваете расширения:

$ ls | egrep '^[^ak].[^a-zA-Z0-9]' | sed -e s/.*\\.//

Есть сокращения для [^a-zA-Z0-9], но этот легко понять и адаптировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...