Список усіх файлів, які не мають розширень


11

Я хочу перерахувати всі файли в каталозі, які не мають розширень.

Наприклад:

$ ls
a.txt    b      c.pdf     d     e.png
$ ls -someOption
b       d

Яку команду я можу використовувати замість ls -someOption?


Зазвичай, якщо ви хочете знати параметри команди, прочитайте її man сторінку, набравши в терміналі "man <command>". людина розшифровується як посібник (допомога). for example- man ls
aaditya1234

@AadityaBagga У цьому випадку відповідь не знайдена в посібнику.
wisbucky

Чи вважаєте ви в цьому сценарії .gitignoreрозширення?
Аміт Найду

Відповіді:


14
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot

Ви виявите, що робити це покаже вам вміст кожного каталогу в робочому каталозі. Якщо ви цього не хочете, скористайтеся:

ls -d !(*.*)

Ви можете поставити shopt -s extglobйого, ~/.bashrcщоб він активувався кожного разу, коли ви відкриваєте термінал. У Ubuntu за замовчуванням вже є рядок ~/.bashrc(рядок 29 для мене на 13.04), який ви можете відмінити, щоб увімкнути цю функцію (і globstar).

Дивіться у Вікі Грега для отримання додаткової інформації про різні варіанти оболонки. Зауважте, що це властивість оболонки bash, а не lsкоманди, тому ви можете використовувати її з іншими командами.

Як варіант, ви можете використовувати

ls --ignore='*.*'

або

ls -I '*.*'

... що є внутрішнім lsваріантом, але extglob може бути застосований до будь-якої довільної команди і так є кориснішим на мою думку.


1
ОП не згадував, яку оболонку, хоча, мабуть, передбачається баш. Якщо це ksh, не потрібен екстраглоб. За замовчуванням просто:ls !(*.*)
runrig

1
@runrig Ви абсолютно правильні, але, враховуючи основний характер питання, я припускав, що ОП використовує оболонку bash за замовчуванням.
злий

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.