Как вывести файлы название которых содержит меньше пяти символов скажем?
Asked
Active
Viewed 378 times
3
-
1В одной папке или во всей системе? – Suvitruf - Andrei Apanasik Oct 16 '17 at 19:06
-
В одной папке,или во всей системе,не важно,мне необходимо принцип понять,у find атрибута я такого не нашел вроде как... – EVG Oct 16 '17 at 19:07
-
2https://ru.stackoverflow.com/q/673952/178576 – aleksandr barakin Oct 16 '17 at 20:50
3 Answers
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
3
find /your_path -type f -print| awk -F/ ' length($NF) < 5 '
Suvitruf - Andrei Apanasik
- 32,302
-
-
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 -
2
Пример с grep:
find ~ -type f | grep -P '/.{5}$'
n3r0bi0m4n
- 1,197
-
Вот здесь вы были правы про дубликат. В следующий раз, пожалуйста, отмечайте сразу: тревога → закрыть → уже был задан → ссылка на нужный вопрос. Тогда вопрос попадет в очередь проверок. Если действительно дубликат — проверки в очереди это подтвердять. И не бойтесь ошибиться с предположением, там ещё пять человек проверят отметку. – Nick Volynkin Oct 18 '17 at 03:16