Рейтинг:0

Как вывести список всех файлов ASCII, присутствующих в каталоге?

флаг mx

Я хочу перечислить все файлы ASCII без расширений (.txt) в моем текущем рабочем каталоге (домашний). Я начал с лс в терминале, но я не знаю, что я должен указать в параметрах, так как я хочу перечислить файлы, у которых нет расширений, а только имя. Как это сделать?

Рейтинг:6
флаг cn

Выполните следующую команду:

найти . -maxdepth 1 -тип f ! -name "*.*" -exec grep -lvIP '[^[:ascii:]]' {} +
  • найти является более мощным лс.
  • . -максимальная глубина 1 означает только текущий каталог
  • -тип ф значит только файлы
  • ! -имя "*.*" означает исключение файлов с расширением
  • -exec grep...{} + означает фильтровать список файлов через grep команда
  • -lvIP '[^[:ascii:]]' значит показывать только файлы которые не содержат -v любой не(^)-ascii символов, а также не содержат бинарных данных(). Perl-синтаксис необходимо использовать [: ascii:] класс символов в шаблоне.
Рейтинг:4
флаг cn

В Linux любой файл может иметь любое содержимое. Итак, файл с именем .txt вполне может содержать изображение в формате JPEG и файл с именем прошивка.bin вполне может содержать текст ASCII.

Если вас интересует содержимое файлов (содержать «текст ASCII»), а также имена файлов (не содержать . в имени файла), предложение @vanadium в комментарии к другому ответу можно улучшить следующим образом:

найти . -maxdepth 1 -тип f ! -name "*.*" -exec файл -0 {} \; | \
  grep -Pa "\0.*текст ASCII.*$"

* Эта команда правильно делает нет выберите "бинарные" файлы, имеющие ASCII-текст в их именах.

Получить только список имен файлов которые совпадают, добавьте трубу | grep -Pao '^[^\0]*' до конца приведенной выше команды.

Рейтинг:0
флаг in

Это может быть выполнено с найти:

найти . -maxdepth 1 -тип f ! -имя "*.*"

Обратите внимание, что ! средства НЕТ, поэтому удалит любой результат, содержащий ..

vanadium avatar
флаг cn
В нем будут перечислены * все * файлы без расширения, а не только текстовые файлы ASCII, как спрашивает OP. Цель OP, по-видимому, состоит в том, чтобы получить все файлы ASCII, даже если у них нет расширения.
vanadium avatar
флаг cn
Может стать `найти . -maxdepth 1 -тип f ! -name "*.*" -exec файл {} \; | grep "ASCII text"` для поиска файлов ASCII только без расширения
FedKad avatar
флаг cn
@vanadium Это не идеальное решение, поскольку оно будет сопоставлять файлы, отличные от ASCII, с «текстом ASCII» в части их имен. Однако ОП не совсем ясен, когда речь идет о «файлах ASCII».
skekmal avatar
флаг mx
@FedonKadifeli Можете ли вы уточнить, что я не знаю о файлах ASCII? Существуют ли различные типы файлов ASCII, которые мы можем использовать здесь, чтобы сузить поиск?
FedKad avatar
флаг cn
@skekmal В Linux любой файл имеет любое содержимое. Таким образом, файл с именем `a.txt` вполне может содержать изображение в формате JPEG, а файл с именем `firmware.bin` вполне может содержать текст ASCII. Если вас интересует содержимое файлов, а также имена файлов, предложение @vanadium можно улучшить следующим образом: `find . -maxdepth 1 -тип f ! -name "*.*" -exec файл -0 {} \; | grep -Pa "\0.*текст ASCII"`
vanadium avatar
флаг cn
@FedonKadifeli, поэтому я не написал полный ответ

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.