Як за допомогою команди «знайти» перелічити файли з певною довжиною імені файлу?


4

У своїй папці я отримав такі файли, як

/data/filename.log /data/filename.log.1 /data/filename.log.2 /data/filenamefilenamename.log /data/filenamefilenamefilename.log.2

Я хочу використовувати команду "find", щоб перерахувати файли, довжина яких перевищує 15 символів.

Я спробував наступне, але жоден з них не працює:

find ./ -type f -iregex "/^.*{15,1000}$/" -print
find ./ -type f -iregex "/^.*{15}$/" -print
find ./ -type f -iregex "^.*{15}$" -print
find ./ -type f -iregex ".*{15}" -print
find ./ -type f -iregex ".{15}" -print
find ./ -type f -iregex ".{15,1000}" -print

Не впевнені, що це правильний шлях?

Дякую!

Відповіді:


4

Я б запропонував версію Пола, якщо ви хочете відповідати лише ім'ям файлу. Якщо ви хочете використовувати, -regexщоб відповідати на повному шляху, ви можете зробити, наприклад,

find /data -type f -regextype posix-egrep -regex ".{15}"

або для 15 і більше символів

find /data -type f -regextype posix-egrep -regex ".{15}.*"

Перевірте головну сторінку для різних доступних двигунів регулярного вибору -regextype.


Ви також можете скористатися -regexопцією, щоб шукати лише імена файлів у 15 символів:

find /data -type f -regextype posix-egrep -regex ".*/[^/]{15}"

або 15 або більше символів:

find /data -type f -regextype posix-egrep -regex ".*[^/]{15}"

7

nameПараметр приймає просту підстановку, так що наступний буде працювати:

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

Отже, це 16 знаків питання, а за ними - зірочка. Знак питання відповідає одному символу, але він повинен відповідати, тому 16 з них поспіль гарантують, що в імені файлу є 16 символів. Зірочка в кінці дозволяє будь-які додаткові символи, задовольняючи вимогу "більше 15 символів", співставляючи "16 і більше символів".


Насправді не зрозуміло, чи хочете ви, щоб ім’я файлу було більшим, або весь шлях?
Павло

Дякуємо Паулу за швидку відповідь та цінні відгуки. Я просто хочу назву файлу ..
дякую

Чудово. Тоді мій підхід набагато простіший - він просто відповідає імені файлу.
Павло

Такий підхід працював для мене і є набагато простішим, ніж визначення регепсипу тощо. Дякую!
Jesper Rønn-Jensen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.