tim9867: Список всех каталогов в которых нет определенного файла.
tim9867
Member
Автор темы
27/445 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 27 декабря 2019 23:03
Имеется аудиоархив - несколько сотен каталогов.
Дерево каталогов следующее: "Буква"-"Исполнитель"-"Альбом"
Не все каталоги уровня "Альбом" содержат фал .cue или .m3u
Соответственно мне нужно получить список каталогов где нет .cue или .m3u файлов.

Теоретически я представляю как это сделать.
Сперва составить список всех каталогов.
Потом составить список каталогов где .cue или .m3u файлы есть.
Потом "вычесть" из первого списка второй.

Какими командами это сделать не представляю.

А, возможно, эта задача решается совсем по другому.
Буду очень признателен за советы.

Спасибо.
Сентябрь
Member
2292/3738 ответов
23 года на iXBT, с декабря 2001
Чаще пишет в "Unix" (61%)
Испания, Барселона
Web-страница
Инфо Ответить
С
Сентябрь Member
5 лет назад / 27 декабря 2019 23:18
1find -type d -maxdepth 3 | egrep -v '.cue|.m3u'
tim9867
Member
Автор темы
28/446 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 28 декабря 2019 00:04
Спасибо. Команда find отработала вот с таким предупреждением

find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

Соответственно в список попали и каталоги первого и второго уровня.

На самом деле я хотел автоматизировать процесс создания плейлиста (файла m3u) в тех каталогах, где его нет.
Т.е. после того, как find корректно отработает запустить его с -exec ls -L > play.m3u {} \; (если не ошибаюсь)

Добавление от 28.12.2019 00:04:

И, кстати, find запущенный таким образом работает некорректно (если в названиях каталогов есть, например, пробелы). Ну как это побороть, я кажется знаю, но вот чтобы каталоги первого и второго уровня в список не попадали....?
~wildwind~
Member
241/8946 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "OС и сист. ПО" (26%)
Россия, РњРѕСЃРєРІР°
Инфо Ответить
w
~wildwind~ Member
5 лет назад / 28 декабря 2019 02:49
tim9867
чтобы каталоги первого и второго уровня в список не попадали
-mindepth 3
tim9867
Member
Автор темы
29/447 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 28 декабря 2019 04:02
Чтобы find корректно обрабатывал каталоги со сложными названиями нужно использовать конструкцию -print0|xargs -0 (так рекомендуют в man по find так, собственно я удалял не нужные файлы во всех каталогах)
Но в команде которую вы привели конвеером запускается egrep.
У меня не получилось сделать двойной конвеер (xargs и egrep) так чтобы find отрабатывал корректно.
vertur
Member
524/6851 ответов, #6 в рейтинге
16 лет на iXBT, с марта 2008
Чаще пишет в "Программирование" (52%)
Гондурас, default city
Инфо Ответить
v
vertur Member
5 лет назад / 28 декабря 2019 08:43
tim9867

У меня не получилось сделать двойной конвеер (xargs и egrep) так чтобы find отрабатывал корректно.
В данном конкртеном случае этого не нужно - читайте man find по ключам -name, -iname, -not
tim9867
Member
Автор темы
31/449 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 28 декабря 2019 14:54
vertur
В данном конкртеном случае этого не нужно
Для начала хочу поблагодарить, что отвечаете в обоих открытых мной топиках.

А вот здесь не понял "этого не нужно" - это чего не нужно?
Я читал man по find. На этот раз особо тщательно перечитал указанные вами разделы.
Но я отношусь к типу людей которые лучше понимают что-либо на примерах.
Т.е. прочтение указанных разделов man не привело меня, к сожалению, к написанию правильной команды.
~wildwind~
Member
243/8948 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "OС и сист. ПО" (26%)
Россия, РњРѕСЃРєРІР°
Инфо Ответить
w
~wildwind~ Member
5 лет назад / 28 декабря 2019 15:07
tim9867
Думаю, vertur намекает на то, чтобы в -name указать регулярку, определяющую три символа "/" в пути, это и будут файлы на третьем уровне.

А -mindepth пробовали?
tim9867
Member
Автор темы
33/451 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 28 декабря 2019 15:20
~wildwind~
А -mindepth пробовали?


Да пробовал. Тоже ворчит, что не правильная последовательность операторов/опций, но отрабатывает.
Правда, как я уже писал, в сложных случаях не справляется.

чтобы в -name указать регулярку, определяющую три символа "/" в пути, это и будут файлы на третьем уровне.
Класс. "/" нужно, скорее всего, экранировать. Опять же не совсем понятно как, собственно, в -name указывать регулярное выражение.
~wildwind~
Member
244/8949 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "OС и сист. ПО" (26%)
Россия, РњРѕСЃРєРІР°
Инфо Ответить
w
~wildwind~ Member
5 лет назад / 28 декабря 2019 19:30
tim9867
как, собственно, в -name указывать регулярное выражение.
Прошу прощения, конечно не -name, а -regex.

Тоже ворчит, что не правильная последовательность операторов/опций
Передвиньте -type после mindepth/maxdepth.

Добавление от 28.12.2019 19:30:

А что за проблемы у вас с пробелами? Мне кажется, что команда Список всех каталогов в которых нет определенного файла., #1 неверно отрабатывает совсем не из-за пробелов.
tim9867
Member
Автор темы
35/453 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 28 декабря 2019 22:01
~wildwind~
А что за проблемы у вас с пробелами? Мне кажется, что команда Список всех каталогов в которых нет определенного файла., #1 неверно отрабатывает совсем не из-за пробелов.

А из-за чего тогда команда не выводит в список каталоги где реально нет ни cue ни m3u.
Зато в списке полно каталогов, где присутствует cue, а иногда и cue и m3u.

Я тут очень поверхностно ознакомился с утилитой parallel.
Но все равно ни на йоту не приблизился к команде, которая корректно решила бы мою проблему.
vertur
Member
528/6859 ответов, #6 в рейтинге
16 лет на iXBT, с марта 2008
Чаще пишет в "Программирование" (52%)
Гондурас, default city
Инфо Ответить
v
vertur Member
5 лет назад / 01 января 2020 21:37
tim9867

Я тут очень поверхностно ознакомился с утилитой parallel.
Зачем ?
Но все равно ни на йоту не приблизился к команде, которая корректно решила бы мою пробле
Всё необходимое вам есть в команде find - за подробностями man find.
tim9867
Member
Автор темы
39/457 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 02 января 2020 16:37
vertur
Всё необходимое вам есть в команде find - за подробностями man find.

Вас уже неоднократно "благодарили" за такие советы.
Но вы упорны в своем желании показать свою крутость и ничтожность задающего вопрос.
Не можете что-либо сказать по делу - просто ничего не пишите.
Не загаживайте топик.
vertur
Member
531/6863 ответов, #6 в рейтинге
16 лет на iXBT, с марта 2008
Чаще пишет в "Программирование" (52%)
Гондурас, default city
Инфо Ответить
v
vertur Member
5 лет назад / 03 января 2020 04:00
tim9867

Но вы упорны в своем желании показать свою крутость и ничтожность задающего вопрос.
Ну а вы упорны в своем не желании читать инструкцию по использованию. Ничего личного.
tim9867

Не загаживайте топик.
Проблема Ваша, не моя. Как решать - будьте любезны смотрите выше по тексту (если вам нужно именно решение).
Но я почему-то уже уверен, что решение Вам не нужно было уже изначально, точно так же так же как и в сопутсвующих темах, кои вы уже расплодили.
tim9867
Member
Автор темы
44/462 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "Видеозахват" (20%)
Инфо Ответить
t
tim9867 MemberАвтор темы
5 лет назад / 03 января 2020 13:49
vertur
Но я почему-то уже уверен, что решение Вам не нужно было уже изначально, точно так же так же как и в сопутсвующих темах, кои вы уже расплодили.
Вы, это очевидно, форумный троль.
Пакостите во всех ветках.
Самое разумное при общении с вами и вам подобными - игнорировать все словоблудия идущие от вас.
Жаль, что в движке форума не предусмотрена возможность забанить топикстартером вас и вам подобных.
vertur
Member
534/6868 ответов, #6 в рейтинге
16 лет на iXBT, с марта 2008
Чаще пишет в "Программирование" (52%)
Гондурас, default city
Инфо Ответить
v
vertur Member
5 лет назад / 03 января 2020 15:30
tim9867

Пакостите во всех ветках.
Моя догадка про Вас оказалась верной - решение вам глубоко не нужно, лишь бы потрындеть ниочём.
PS: Кстати копипаст сообщений во многие ветки административно наказуем.
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).