Определите, скрыты ли файлы или каталоги

По сути, ни один.

Когда Вы работаете xvncserver это должно сделать две вещи.

  1. Откройте порт прослушивания (который для VNC является 5901
  2. Создайте цель дисплея

Цель дисплея может быть любым числом. Обычно вход в систему на консоли через X будет использовать дисплей :0. Это не имеет к, Вы могли войти в систему на консоли сначала и затем использовать startx :36 вместо этого. Использование VNC 1.0 по умолчанию, потому что это - вероятно, первый доступный дисплей.

Эти два выбраны условно, нет никакого волшебства, которое связывает их кроме рабочего процесса, присоединенного к обоим.

0
29.11.2013, 01:21
3 ответа

Скрытые файлы и каталоги имеют имена, запускающиеся с ., таким образом, можно использовать следующее решение в Bash:

# Skip '.' and '..':
if [ "$file_name" = . ] || [ "$file_name" = .. ];then
    continue
fi
# Find hidden files:
if [[ "$file_name" =~ ^\. ]];then # if file name starts with a .
...
5
28.01.2020, 02:14
  • 1
    привет, может эта проверка "текущий каталог" или "родительский каталог". –  Jason Heo 28.11.2013, 13:36
  • 2
    @JungsuHeo, я добавил условия для этого в ответе. –  Joseph R. 28.11.2013, 13:38
  • 3
    IIRC ..X и ... правильный файл/dir-names, был бы они не быть обработанным таким же образом как .. Вашим $ regex –  Anthon 28.11.2013, 14:05
  • 4
    @Anthon Вы правы. regex для обработки таких случаев, вероятно, был бы слишком сложным, чтобы Bash интерпретировал, все же. –  Joseph R. 28.11.2013, 14:16
  • 5
    +1 я соглашаюсь с Anthon: Вы делаете это в цикле, таким образом проверьте специально для . и .. сначала; если один из тех матчей начинается цикл снова. В противном случае затем соответствие против ^\.. –  goldilocks 28.11.2013, 14:37

Нет никаких скрытых файлов или каталогов в собственных файловых системах Unix, по крайней мере, не на основе некоторого атрибута, присвоенного в метаданных файловой системы.

То, что является пользовательским, то, что некоторые команды как ls, не делайте дисплейным файлом по умолчанию / каталоги, где имя запускается с'.'. Другие инструменты (как, например, наутилус) следуют этой конвенции. Если Вы смотрите на страницу справочника ls это не пишет о скрытых файлах:

-a, --all
     do not ignore entries starting with .

Согласно Википедии это поведение является результатом программной ошибки в первые годы Unix.

Другие инструменты, такой как find будет всегда отображать эти файлы, проигнорированные ls.

В файловых системах Windows существуют скрытые файлы на основе атрибутов, видят, например, этот вопрос.

Я подозреваю, что часть Вашей домашней работы является вопросом о приеме, поскольку люди часто путают скрывающееся поведение ls с тем, чтобы там быть скрытыми файлами.

2
28.01.2020, 02:14
  • 1
    также, если Вы работаете с ls существует --almost-all (-A) который обеспечивает то же, но без . и .. записи в начале –  erch 28.11.2013, 13:58
  • 2
    Это было полностью моей ошибкой скрытыми файлами, я действительно имел в виду файл, запускающийся с a. –  Joshua Twaites 28.11.2013, 14:52

find /directory_path -type f | wc -l даст Вам количество файлов

find /directory_path -type d | wc -l даст Вам количество каталогов

0
28.01.2020, 02:14
  • 1
    a) Это не определяет скрытые файлы, b), "Мне не разрешают использовать-R или найти или du" положительная сторона –  Joseph R. 28.11.2013, 13:37
  • 2
    ... Если find не используется, затем пойдите с решением Joseph. Это сделает задание –  SHW 28.11.2013, 13:56
  • 3
    , Это не работает, если имена файлов или имена каталогов имеют новые строки в них. –  Anthon 28.11.2013, 13:57
  • 4
    Ну, это работает здесь на Скрытые файлы и файл/каталоги, содержащий пробел или символ новой строки. Я использую Ubuntu 13.10, и findutils версия 4.4.2-6ubuntu1. Так или иначе, с тех пор find не будет решение для корреспондента затем нет никакого смысла спорящего/обсуждающего об этой команде –  SHW 29.11.2013, 08:00

Теги

Похожие вопросы