sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.

Список файлов без расширений но при этом выводить и скрытые файлы(чтобы точка осталась)?

Тут сегодня кто то задавал вопрос:
"Как вывести имена файлов без расширений но при этом выводить и скрытые файлы(чтобы точка осталась)? "
"Вопрос удален модератором по причине: Это задание...
а где же ещё можно/нужно задать подобный/е вопросы?
мне вот тоже стало интересно,как это можно решить но хоть и просто,но быстренько не получилось
ни написать код ни нагуглить ответ.
с linux|bash я знаком не давно (только учусь)
Хватит лирики ,прейдём к вопросу:
ls -a выдаст листинг директории со скрытыми файлами,
а как исключить директории из этого списка ?
с regexp вообще ничего не пойму (в notepad++ сделал за минуту)
пробовал ls -a | awk '/(^.+?)(\..+$)/{print $1}'
вот это в notepad++ решает ,но как это перевести в консоль linux ?
59ef12b2931eb258454997.png

PS
в данном случае за расширение считается всё что идёт после последней/правой точки в названии файла,
конечно исключая файлы начинающиеся с точки.

PS
1)решение:
find -maxdepth 1 -type f -printf "%f\n" | sed -r 's/^(.+)\.[^.]+$/\1/'
  • Вопрос задан
  • 3262 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Что ж так сложно все у вас.
Вывод всего без расширения, но с точками
ls -A --ignore='*.???'
Убираем директории
ls -FA --ignore='*.???'| grep -v "/"

Еще один вариант, игнорируем файлы, где есть точка не в начале файла.
ls -FA --ignore='?*.*' | grep -v "/"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@goshanchik_kot
а можно узнать что конкретно делает функция
sed -r 's/^(.+)\.[^.]+$/\1/'
?
а то я новичок в этом вашем линуксе, часть с файнд -принтф понял, а это не доходит :(
Ответ написан
sotvm
@sotvm Автор вопроса
Умный поймёт, а дураку и так всё равно.
Спасибо,вроде и читал ман по ,но как то "прошло мимо кассы" ls -FA | grep -v "/"
теперь уже буду знать/пользовать,
а с расширениями --ignore='*.???'- увы, не универсальный вариант,
т.к. оно может быть из любого кол-ва символов .
а вот так будет в самый раз ㋛
ls -FA | grep -v "/" | sed -r 's/^(.+)\.[^.]+$/\1/'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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