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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

Оффлайн prodvi

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

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

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3145
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Код: Bash
  1. find /path/to/dir -type d # найдет только папки в директории /path/to/dir (рекурсивно, то есть пройдется и по подпапкам)
  2. find /path/to/dir -type f # найдет только файлы в директории /path/to/dir (рекурсивно, то есть пройдется и по подпапкам)
  3. find /path/to/dir -maxdepth 1 -type d # то же самое, что и первое, только без рекурсии (maxdepth - глубина поиска)
  4. find /path/to/dir -maxdepth 1 -type f -name '??????????' # найдет файлы в папке с длиной имени 10 байт
  5. find /path/to/dir -maxdepth 1 -type f -name '??????????' -delete # найдет и удалит файлы с длиной имени 10 байт
  6. find /path/to/dir -maxdepth 1 -type d -name '??????????' -exec rm -rf {} \; # найдет и удалит папки с длиной имени 10 байт
  7.  

А вообще
Код: Bash
  1. man find
  2.  
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн 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

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

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3145
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн prodvi

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

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

Оффлайн ReNzRv

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

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3145
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
prodvi, вы же хотели научится пользоваться инструментами, а не только взять гоовый рецепт? И не за что)
(Нажмите, чтобы показать/скрыть)
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5674
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
найти в папке файлы или папки с длинной имени "х" символов, к примеру 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
  1. stat -c %a is.pungle.php
« Последнее редактирование: 03 Ноябрь 2016, 14:08:00 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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