3

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

EVG
  • 1,241

3 Answers3

4

Утилита find умеет в регулярные выражения, и можно обойтись без вызова сторонних программ.

find -regextype egrep -regex '.*/.{,5}'

Первые три символа в шаблоне нужны из-за того, что -regex применяется ко всему пути, а мы хотим найти файлы, анализируя лишь их имя безотносительно местоположения. Кроме того, мы задали ключ -regextype, чтобы упростить наше регулярное выражение.

Обратите внимание, в регулярке мы записали пятёрку, что означает нестрогое сравнение. То есть команда выше выведет имена файлов, в которых не более пяти символов. Чтобы обеспечить точное соответсвие условию в вопросе, нужно заменить 5 на 4. (Но это уже будет не так интересно).

mymedia
  • 8,602
  • 1
    {,5} означает "меньше либо равно". Чтобы < 5 было, можно {,4} использовать. Можно ещё так: find -regex '.*/.?.?.?.?' – jfs Oct 17 '17 at 08:20
  • 1
    верно! дописал дополнение об этом, второй вариант мне кажется более сложным - в нем больше символов – mymedia Oct 17 '17 at 09:52
  • 1
    Если вы длину команды считаете важным, то второй вариант как раз короче (обратите внимание, нет -regextype) – jfs Oct 17 '17 at 12:11
  • 1
    да... точно ._. – mymedia Oct 18 '17 at 19:25
3
find /your_path -type f -print| awk -F/ ' length($NF)  < 5 '
  • а каким образом уже можно изменить права доступа к уже найденным файлам? – EVG Oct 16 '17 at 19:22
  • 1
    Вообще chmod. Или вы про то, чтоб применить эту команду ко всем файлам, которые показала find? – Suvitruf - Andrei Apanasik Oct 16 '17 at 19:29
  • 1
    @EVG, вообще говоря, это уже отдельный вопрос, который стоит опубликовать отдельным сообщением. Но в вашем случае я бы дописал к команде | xargs chmod права. – mymedia Oct 16 '17 at 19:29
  • 1
    find /your_path k -type f -print| awk -F/ ' length($NF) < 5 ' | xargs -I{} chmod -v 645 {} – Suvitruf - Andrei Apanasik Oct 16 '17 at 19:33
  • Благодарю,разобрался. – EVG Oct 16 '17 at 19:35
2

Пример с grep:

find ~ -type f | grep -P '/.{5}$'
n3r0bi0m4n
  • 1,197
  • Вот здесь вы были правы про дубликат. В следующий раз, пожалуйста, отмечайте сразу: тревога → закрыть → уже был задан → ссылка на нужный вопрос. Тогда вопрос попадет в очередь проверок. Если действительно дубликат — проверки в очереди это подтвердять. И не бойтесь ошибиться с предположением, там ещё пять человек проверят отметку. – Nick Volynkin Oct 18 '17 at 03:16