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


Автор Тема: Как заставить команду find работать нерекурсивно?  (Прочитано 585 раз)

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

Оффлайн sherba800

  • Автор темы
  • Любитель
  • *
  • Сообщений: 62
    • Просмотр профиля
Предположим есть некая команда find -type f \( -iname *jpg \) -exec rename 's/\.JPG$/.jpg/' *.jpg "{}" \;, которая меняет расширение на нижний регистр для изображений Jpeg. Если обработать этой командой папку, то если в папке будет подпапка с изображениями, то расширения поменяются и в ней рекурсивно в зависимости от того, сколько папок. Можно ли как-то заставить команду find искать только в текущем каталоге, не затрагивая подкаталоги (команда выше приведена просто для примера)?

serchik

  • Гость
Вы дольше писали это сообщение, чем гуглили или рылись в мануалах команды find. Опция -prune решит задачу (за подробностями идем man find)

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
serchik,
Не совсем так. Опция -prune решит вопрос если путь поиска указан шаблоном вида /папка/*. В вариантах, аналогичном указанному стоит использовать опцию -maxdepth 1
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

serchik

  • Гость
Azure,
Спасибо за поправку  ;)

Оффлайн sherba800

  • Автор темы
  • Любитель
  • *
  • Сообщений: 62
    • Просмотр профиля
Вы дольше писали это сообщение, чем гуглили или рылись в мануалах команды find. Опция -prune решит задачу (за подробностями идем man find)
Честно сказать рылся в мануале, но не увидел -maxdepth. Гугл подсказал указать после команды find точку, задав этим самым текущую директорию, но это не работает. Поэтому решил спросить. Иногда ступор случается, недавно просто на линуксе, не всё так просто находится и понимается. Спасибо, что ответили.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5659
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Честно сказать рылся в мануале, но не увидел -maxdepth.
LESS=+/^\\s*-maxdepth man find
Гугл подсказал указать после команды find точку, задав этим самым текущую директорию, но это не работает.
Google это конечно здорово, но читать надо сначала исходную документацию
Цитата: find --help
путь по умолчанию: текущий каталог; выражение по умолчанию: -print
так что с учетом того, что «.» == «$PWD»(текущей директории) добавив в путь точку Вы не изменили абсолютно ничего в своей команде.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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