Форум русскоязычного сообщества Ubuntu


Автор Тема: Найти файлы и/или папки по длинне в имени или названии  (Прочитано 953 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн prodvi

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
  • Баян он и есть баян
    • Просмотр профиля
Приветствую дорогие друзья!
Понадобилось такое: найти в папке файлы или папки с длинной имени "х" символов, к примеру 4 и послать их к примеру на удаление, как это сделать?
Пока могу только так:
ls |grep ????
grep: ht5n: Is a directory
grep: i5ma: Is a directory
grep: ijtj: Is a directory
Как видно, вывод его неудобен и обработать его не знаю как, кто что может подсказать?

Советское значит лучшее

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Код: (bash) [Выделить]
find /path/to/dir -type d # найдет только папки в директории /path/to/dir (рекурсивно, то есть пройдется и по подпапкам)
find /path/to/dir -type f # найдет только файлы в директории /path/to/dir (рекурсивно, то есть пройдется и по подпапкам)
find /path/to/dir -maxdepth 1 -type d # то же самое, что и первое, только без рекурсии (maxdepth - глубина поиска)
find /path/to/dir -maxdepth 1 -type f -name '??????????' # найдет файлы в папке с длиной имени 10 байт
find /path/to/dir -maxdepth 1 -type f -name '??????????' -delete # найдет и удалит файлы с длиной имени 10 байт
find /path/to/dir -maxdepth 1 -type d -name '??????????' -exec rm -rf {} \; # найдет и удалит папки с длиной имени 10 байт

А вообще
Код: (bash) [Выделить]
man find
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн prodvi

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
  • Баян он и есть баян
    • Просмотр профиля
EvangelionDeath, благодарю, не догадался использовать -name
В итоге команда получилась такого типа:
find ../escalade/ -maxdepth 1 -type d -name "????" ! -name logs ! -name koll ! -name lith -exec rm -rf {} \;
Тогда наверное здесь же попробую задать подобный вопрос: как найти и удалить файлы с правами типа:
-rwsr-Sr-T  1 award f-data      4705 Sep 21 01:32 is.pungle.phpЯ вообще такие права увидел недавно, ещё толком не знаю, что это означает, и с удалением так же возник вопрос, буду признателен
« Последнее редактирование: 03 Ноября 2016, 12:12:28 от prodvi »

Советское значит лучшее

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Цитировать
найти в папке файлы или папки с длинной имени "х" символов, к примеру 4 и послать их к примеру на удаление
Код: (bash) [Выделить]
find | egrep '.*/[^/]{4}$' | xargs -d'\n' rm -r -fили одним find'ом:
Код: (bash) [Выделить]
find -regextype posix-extended -regex '.*/[^/]{4}$' -exec rm -r -f {} +
« Последнее редактирование: 03 Ноября 2016, 12:14:48 от renzrv »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн prodvi

  • Автор темы
  • Активист
  • *
  • Сообщений: 433
  • Баян он и есть баян
    • Просмотр профиля
renzrv, спасибо за варианты, оба интересны, что в первом с egrep-ом, что во втором с regex, потестирую
EvangelionDeath, почитал ман, не особо информативен мануал по нему, но благодарю, что натолкнули в нужное направление.
В итоге что-то подобное понадобится для поиска:
find [directory] -user root -perm -4000Дальше буду тестировать

Советское значит лучшее

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Цитировать
Я вообще такие права увидел недавно, ещё толком не знаю, что это означает
https://help.ubuntu.ru/wiki/стандартные_права_unix
« Последнее редактирование: 03 Ноября 2016, 13:31:20 от Azure »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
prodvi, вы же хотели научится пользоваться инструментами, а не только взять гоовый рецепт? И не за что)
(Нажмите, чтобы показать/скрыть)
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
найти в папке файлы или папки с длинной имени "х" символов, к примеру 4 и послать их к примеру на удаление, как это сделать?
Пока могу только так:ls |grep ????
rm -r ????

Пользователь добавил сообщение 03 Ноября 2016, 14:08:00:
с правами типа:
-rwsr-Sr-T  1 award f-data      4705 Sep 21 01:32 is.pungle.phpЯ вообще такие права увидел недавно, ещё толком не знаю, что это означает
Я бы использовал цифровую форму
Код: (bash) [Выделить]
stat -c %a is.pungle.php
« Последнее редактирование: 03 Ноября 2016, 14:08:00 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.052 секунд. Запросов: 23.