Как вывести файлы названием которых содержит меньше пяти символов скажем? unix
Как вывести файлы название которых содержит меньше пяти символов скажем?
У вопроса есть решение - Посмотреть?

В одной папке или во всей системе?
Источник

В одной папке,или во всей системе,не важно,мне необходимо принцип понять,у find атрибута я такого не нашел вроде как...
Источник

ru.stackoverflow.com/q/673952/178576
Источник
Ответы - Как вывести файлы названием которых содержит меньше пяти символов скажем? unix / Как вывести файлы названием которых содержит меньше пяти символов скажем? unix
Является ответом!

16.10.2017 10:11:02
find /your_path -type f -print| awk -F/ ' length($NF) < 5 '

а каким образом уже можно изменить права доступа к уже найденным файлам?

Вообще
chmod
. Или вы про то, чтоб применить эту команду ко всем файлам, которые показала find
?

@EVG, вообще говоря, это уже отдельный вопрос, который стоит опубликовать отдельным сообщением. Но в вашем случае я бы дописал к команде
| xargs chmod права
.

find /your_path k -type f -print| awk -F/ ' length($NF) < 5 ' | xargs -I{} chmod -v 645 {}

Благодарю,разобрался.


Вот здесь вы были правы про дубликат. В следующий раз, пожалуйста, отмечайте сразу: тревога → закрыть → уже был задан → ссылка на нужный вопрос. Тогда вопрос попадет в очередь проверок. Если действительно дубликат — проверки в очереди это подтвердять. И не бойтесь ошибиться с предположением, там ещё пять человек проверят отметку.

16.10.2017 10:24:04
Утилита find умеет в регулярные выражения, и можно обойтись без вызова сторонних программ.
find -regextype egrep -regex '.*/.{,5}'
Первые три символа в шаблоне нужны из-за того, что -regex
применяется ко всему пути, а мы хотим найти файлы, анализируя лишь их имя безотносительно местоположения. Кроме того, мы задали ключ -regextype
, чтобы упростить наше регулярное выражение.
Обратите внимание, в регулярке мы записали пятёрку, что означает нестрогое сравнение. То есть команда выше выведет имена файлов, в которых не более пяти символов. Чтобы обеспечить точное соответсвие условию в вопросе, нужно заменить 5 на 4. (Но это уже будет не так интересно).

{,5}
означает "меньше либо равно". Чтобы < 5
было, можно {,4}
использовать. Можно ещё так: find -regex '.*/.?.?.?.?'

верно! дописал дополнение об этом, второй вариант мне кажется более сложным - в нем больше символов

Если вы длину команды считаете важным, то второй вариант как раз короче (обратите внимание, нет
-regextype
)

да... точно ._.
Помочь в развитии проекта: