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


Автор Тема: Проверка содержимого папки.  (Прочитано 1213 раз)

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

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Проверка содержимого папки.
« : 09 Октябрь 2015, 20:23:23 »
Всем доброго времени суток, понадобилась такая команда которая проверит наличие файлов в определенном каталоге, в гугле ответа не нашел.

Всем заранее Огромное спасибо.
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

| toZen |

  • Гость
Re: Проверка содержимого папки.
« Ответ #1 : 09 Октябрь 2015, 20:27:44 »
orionit, хорошая шутка, или я не понял вопроса?
ls /path??

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #2 : 09 Октябрь 2015, 21:12:04 »
τοΖεη,
Вы не поняли вопроса, дело обстоит так, есть папка и мне нужно проверить есть ли в ней содержимое т.е false или true, а вы дали команду для вывода содержимого.
« Последнее редактирование: 09 Октябрь 2015, 21:13:59 от orionit »
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #3 : 09 Октябрь 2015, 21:29:26 »
Конкретное содержимое: test -f папка/имя_файла. Или имеется ввиду хоть 1 файл в папке?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #4 : 09 Октябрь 2015, 22:00:16 »
Или имеется ввиду хоть 1 файл в папке?
Именно так.
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

| toZen |

  • Гость
Re: Проверка содержимого папки.
« Ответ #5 : 09 Октябрь 2015, 22:10:14 »
Или имеется ввиду хоть 1 файл в папке?
Именно так.
ls -1 targetdir | wc -l??

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #6 : 09 Октябрь 2015, 22:14:16 »
Ну например
Код: Bash
  1. [[ $(echo -n папка/*) =~ [*] ]]
без учета скрытых файлов и включая директории

Пользователь решил продолжить мысль [time]09 Октябрь 2015, 22:15:11[/time]:
τοΖεη, -1 не обязательно + стоит добавить слэш targetdir/
« Последнее редактирование: 09 Октябрь 2015, 22:22:07 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 750
    • Просмотр профиля

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #8 : 09 Октябрь 2015, 22:36:37 »
Azure,
Спасибо, но интересен маленький вопрос, что означает знак ~ в bash.

В гугле не нарыл.
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12075
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #9 : 09 Октябрь 2015, 22:37:57 »
~ это шорткат для /home/<current user>

т.е. это ссылка на собственный хомяк пользователя
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #10 : 09 Октябрь 2015, 22:43:35 »
Sly_tom_cat,
Цитировать
это ссылка на собственный хомяк пользователя
А смысл такой команды какой?
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #11 : 09 Октябрь 2015, 22:46:05 »
Ещё можно так
Код: Bash
  1. if ls папка/* &>/dev/null; then
  2.     echo OK
  3. fi
что означает знак ~ в bash.
   Tilde Expansion
       If  a  word begins with an unquoted tilde character (`~'), all of the characters preceding the first unquoted slash (or all characters, if there is
       no unquoted slash) are considered a tilde-prefix.  If none of the characters in the tilde-prefix are quoted, the  characters  in  the  tilde-prefix
       following the tilde are treated as a possible login name.  If this login name is the null string, the tilde is replaced with the value of the shell
       parameter HOME.  If HOME is unset, the home directory of the user executing the shell is  substituted  instead.   Otherwise,  the  tilde-prefix  is
       replaced with the home directory associated with the specified login name.

       If  the  tilde-prefix  is  a  `~+', the value of the shell variable PWD replaces the tilde-prefix.  If the tilde-prefix is a `~-', the value of the
       shell variable OLDPWD, if it is set, is substituted.  If the characters following the tilde in the tilde-prefix consist of a number  N,  optionally
       prefixed  by  a `+' or a `-', the tilde-prefix is replaced with the corresponding element from the directory stack, as it would be displayed by the
       dirs builtin invoked with the tilde-prefix as an argument.  If the characters following the tilde in the tilde-prefix consist of a number without a
       leading `+' or `-', `+' is assumed.

       If the login name is invalid, or the tilde expansion fails, the word is unchanged.

       Each  variable assignment is checked for unquoted tilde-prefixes immediately following a : or the first =.  In these cases, tilde expansion is also
       performed.  Consequently, one may use filenames with tildes in assignments to PATH, MAILPATH, and CDPATH, and the shell assigns the expanded value.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12075
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #12 : 09 Октябрь 2015, 22:52:30 »
А смысл такой команды какой?
Это не команда, это символ заменитель - его значение заменяется на значение переменной HOME из окружения текущего пользователя.

Это упрощает доступ к собственным данным. Т.е. вместо того что бы писать $HOME/бла_бла_бла или /home/user/бла_бла_бла пишут
~/бла_бла_бла  - что гораздо короче и не нужно ни название служебной переменной помнить ни имя пользователя.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн orionit

  • Автор темы
  • Активист
  • *
  • Сообщений: 581
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #13 : 09 Октябрь 2015, 23:04:46 »
Sly_tom_cat,
Большое спасибо за разъяснение.
Azure,
Теперь вопрос к вам, зачем в примере
Ну например
Код: Bash
  1. [[ $(echo -n папка/*) =~ [*] ]]
без учета скрытых файлов и включая директории
зачем нужен данный кусочек кода
=~ [*]
Всем добра как у бобра, а если вы и без добра добры, значит вы в душе бобры.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 2197
    • Просмотр профиля
Re: Проверка содержимого папки.
« Ответ #14 : 09 Октябрь 2015, 23:19:35 »
Ещё можно по размеру каталога - если он пуст, то его размер 4096. Т.е. если
du -sb dirвернёт 4096 или
du -s dirвернёт 4, то каталог dir пуст.
Пётр.

 

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