The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Проверить наличие файлов в директории, !*! Alexander7, 13-Авг-17, 09:17  [смотреть все]
Надо просто проверить пустая ли директория.
Ожидал, что в test будет аналог -s FILE, но не нашёл.

Написал такой колхоз
[ $(ls DIR | wc -l) -eq 0 ]

Задача решена, но очевидно будет бредом, если директория может содержать "миллион" файлов.
И думаю вариант типа ls | head -n1 тоже не очень хорошо.

Есть ли более цивильное решение?

Спасибо

  • Проверить наличие файлов в директории, !*! pavard, 16:59 , 13-Авг-17 (1)
  • Проверить наличие файлов в директории, !*! Kazak, 20:40 , 13-Авг-17 (2) –1
    > Надо просто проверить пустая ли директория.
    > Ожидал, что в test будет аналог -s FILE, но не нашёл.
    > Написал такой колхоз
    > [ $(ls DIR | wc -l) -eq 0 ]
    > Задача решена, но очевидно будет бредом, если директория может содержать "миллион" файлов.
    > И думаю вариант типа ls | head -n1 тоже не очень хорошо.
    > Есть ли более цивильное решение?
    > Спасибо

    [ $(du --inodes DIR | cut -f1) -eq 1 ]

  • Проверить наличие файлов в директории, !*! ЫЫ, 10:35 , 14-Авг-17 (4) –1
    > Надо просто проверить пустая ли директория.
    > Ожидал, что в test будет аналог -s FILE, но не нашёл.
    > Написал такой колхоз
    > [ $(ls DIR | wc -l) -eq 0 ]
    > Задача решена, но очевидно будет бредом, если директория может содержать "миллион" файлов.
    > И думаю вариант типа ls | head -n1 тоже не очень хорошо.
    > Есть ли более цивильное решение?
    > Спасибо

    Отработайте выхлоп rm:
    rm -di непустойкаталог
    rm: невозможно удалить 'непустойкаталог': Каталог не пуст

    rm -di пустойкаталог
    rm: удалить каталог 'пустойкаталог'?

    • Проверить наличие файлов в директории, !*! ЫЫ, 10:36 , 14-Авг-17 (5) –1
      >[оверквотинг удален]
      >> [ $(ls DIR | wc -l) -eq 0 ]
      >> Задача решена, но очевидно будет бредом, если директория может содержать "миллион" файлов.
      >> И думаю вариант типа ls | head -n1 тоже не очень хорошо.
      >> Есть ли более цивильное решение?
      >> Спасибо
      > Отработайте выхлоп rm:
      > rm -di непустойкаталог
      > rm: невозможно удалить 'непустойкаталог': Каталог не пуст
      > rm -di пустойкаталог
      > rm: удалить каталог 'пустойкаталог'?

      ну или гляньте исходник rm как он проверяет что каталог не пуст

    • Проверить наличие файлов в директории, !*! pavard, 11:39 , 14-Авг-17 (7)
      > Отработайте выхлоп rm:

      для всех локалей?

      • Проверить наличие файлов в директории, !*! ЫЫ, 13:01 , 14-Авг-17 (10)
        >> Отработайте выхлоп rm:
        > для всех локалей?

        Это же ЮниксВэй.. какая вам разница что там за локаль у юзера? :) Работаете в своей.
        делается так:
        export LANGUAGE=en; rm -di непустойкаталог

        • Проверить наличие файлов в директории, !*! pavard, 13:14 , 14-Авг-17 (11)
          для всех реализаций и их сообщений? сообщения команд не относятся к апи и: 1) могут меняться, 2) отличаться в разных реализациях, 3) это какой-то лютый здец так программировать. самого не коробит?
          • Проверить наличие файлов в директории, !*! ЫЫ, 13:28 , 14-Авг-17 (12)
            > для всех реализаций и их сообщений? сообщения команд не относятся к апи
            > и: 1) могут меняться, 2) отличаться в разных реализациях, 3) это
            > какой-то лютый здец так программировать. самого не коробит?

            Как так? Вы похоже только что с курсов телепатов...

            Есть конкретная задача... Она решается.
            Человек пишущий универсальный чекер на все случаи систем - и задающий такой вопрос- мягко говоря занимается не тем делом к которому у него есть талант.

            Мое решение- быстро и эффективно, без оверхеда, решает задачу. на конкретной системе.
            Ваши претензии- надуманны.

            > и: 1) могут меняться,

            если вы собираетесь использовать решение на многих системах неизвестной архитектуры- посмотрите как и было посоветовано исходник rm.

            >2) отличаться в разных реализациях,

            Человек собирается использовать свой скрипт на разных реализациях? Он вам это в личной переписке сказал? Или телепатия?


            >3) это какой-то лютый здец так программировать. самого не коробит?

            Это быстрое, простое и эффективное решение не претендующее на универсальность.
            А почему это должно коробить?

            • Проверить наличие файлов в директории, !*! ЫЫ, 13:31 , 14-Авг-17 (13)
              >[оверквотинг удален]
              > Как так? Вы похоже только что с курсов телепатов...
              > Есть конкретная задача... Она решается.
              > Человек пишущий универсальный чекер на все случаи систем - и задающий такой
              > вопрос- мягко говоря занимается не тем делом к которому у него
              > есть талант.
              > Мое решение- быстро и эффективно, без оверхеда, решает задачу. на конкретной системе.
              > Ваши претензии- надуманны.
              >> и: 1) могут меняться,
              > если вы собираетесь использовать решение на многих системах неизвестной архитектуры- посмотрите
              > как и было посоветовано исходник rm.

              И да... за адаптацию под любую из дополнительных систем- я возьму дополнительные деньги...
              :)

              Нет не треснет :)
              >>2) отличаться в разных реализациях,
              > Человек собирается использовать свой скрипт на разных реализациях? Он вам это в
              > личной переписке сказал? Или телепатия?
              >>3) это какой-то лютый здец так программировать. самого не коробит?
              > Это быстрое, простое и эффективное решение не претендующее на универсальность.
              > А почему это должно коробить?

              • Проверить наличие файлов в директории, !*! ЫЫ, 14:20 , 14-Авг-17 (14)
                >[оверквотинг удален]
                > И да... за адаптацию под любую из дополнительных систем- я возьму дополнительные
                > деньги...
                > :)
                > Нет не треснет :)
                >>>2) отличаться в разных реализациях,
                >> Человек собирается использовать свой скрипт на разных реализациях? Он вам это в
                >> личной переписке сказал? Или телепатия?
                >>>3) это какой-то лютый здец так программировать. самого не коробит?
                >> Это быстрое, простое и эффективное решение не претендующее на универсальность.
                >> А почему это должно коробить?

                Ну и наконец..
                "find DIR -maxdepth 0 -empty"
                просто поражает своей привязкой к api, неотличаемостью на разных архитектурах и не коробимостью.. :)

                • Проверить наличие файлов в директории, !*! pavard, 23:48 , 14-Авг-17 (15)
                  понимаю задел. тут даже если ты сам поймешь что не прав - об этом не скажешь и будешь доказывать провоту. если ты привык так писать - ок пиши.
                  • Проверить наличие файлов в директории, !*! ыы, 06:16 , 15-Авг-17 (16)
                    > понимаю задел. тут даже если ты сам поймешь что не прав -
                    > об этом не скажешь и будешь доказывать провоту. если ты привык
                    > так писать - ок пиши.

                    Ты похоже реально не понимаешь что ключи у программы- на разных платформах и разных реализациях могут быть разные... и нет принципиально никакой разницы между  тем что предложил я и тем что предложил ты...
                    Ну.. не понимаешь и не понимаешь... что ж тут поделаешь :)

  • Проверить наличие файлов в директории, !*! XAnder, 11:35 , 14-Авг-17 (6)
    > [ $(ls DIR | wc -l) -eq 0 ]
    > Задача решена, но очевидно будет бредом, если директория может содержать "миллион" файлов.
    > И думаю вариант типа ls | head -n1 тоже не очень хорошо.

    Если верить исходникам ls, в некоторых случаях он может не читать весь каталог перед выводом, а выводить сразу:


                  /* In this narrow case, print out each name right away, so
                     ls uses constant memory while processing the entries of
                     this directory.  Useful when there are many (millions)
                     of entries in a directory.  */
                  if (format == one_per_line && sort_type == sort_none
                          && !print_block_size && !recursive)

    Должно сработать что-то вроде этого:

    ls -f1 | head -n3 | wc -l

    Выведет 2 на пустом каталоге (. и ..) и 3 — на непустом.

  • Проверить наличие файлов в директории, !*! pavlinux, 01:10 , 18-Авг-17 (21)
    > Есть ли более цивильное решение?

    for i in `find / -type d`; do if [ `stat -c%s $i` -gt 6 ]; then echo $i FULL; else rmdir $i; fi; done;




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру