Как найти скрытое имя файла длиной 2 или 3 символа

Запуск препроцессора C напрямую:

$ cpp -P main.txt

Это будет сделано. Вам нужно будет указать имя включаемых файлов в кавычках:

#включают "fragment1.txt"

В качестве бонуса вы получаете всю мощь препроцессора C :макросов, условных включений и т. д.

0
05.11.2020, 22:10
2 ответа

GNU findверсия 4.6.0 в Bash CentOS 8:

find. -type f -name '.??' -o -name '.???'

Это найдет скрытые файлы с двумя или тремя символами.

Если вы считаете .одним из символов:

find. -type f -name '.?' -o -name '.??'
0
18.03.2021, 22:52

Имя скрытого файла всегда начинается с точки. Скрытое имя файла, состоящее из двух символов, включая начальную точку, будет соответствовать .?, а .??будет соответствовать скрытому имени файла, состоящему из трех символов.

Предположим, что вам нужны имена обычных файлов , а не каталогов и других типов файлов, тогда вы сможете использовать

find. -type f \( -name '.?' -o -name '.??' \)

Это позволит найти обычные файлы в текущем каталоге или ниже, имена которых скрыты и имеют длину два или три символа.

Если вы используете оболочку bashи вас интересуют только имена в текущем каталоге:

shopt -s nullglob
for name in.?.??; do [[ -f $name ]] && printf '%s\n' "$name"; done

Это позволит перебрать все имена, соответствующие любому из двух шаблонов (, если таковые имеются ), и распечатать те, которые соответствуют обычным файлам или символическим ссылкам на обычные файлы.

Установка параметра оболочки nullglobв bashгарантирует, что шаблон будет полностью удален, если он не соответствует ни одному имени, а не останется нераскрытым.

Также установив параметр оболочки extglobв bash,два шаблона .?и .??могут быть объединены в.@(?|??)(или, возможно, .??(?), но это немного запутывает ).

В оболочке zshвы можете сделать так, чтобы шаблон соответствовал только обычным файлам с помощью квалификатора glob, и поэтому вам не нужен этот цикл:

printf '%s\n'.(?|??)(.)

Здесь (.)— это квалификатор подстановки, который ограничивает сопоставление имен только обычными файлами.

1
18.03.2021, 22:52

Теги

Похожие вопросы