Описание тега oss
Один из подходов заключается, чтобы пользоваться ЛС
, чтобы дать нам список файлов, но мы хотим, чтобы этот список должен быть гарантирован, чтобы показать только 1 файл или каталог в строке. На -1
переключатель будет делать это за нас.
$ Общ -1
из dir1
директория dir2
dir3
fileaбыл
fileB
фрлец
Пример
Создать образец данных на пустой каталог.
$ команды mkdir реж{1..3}
файл $ касания{a..в}
Проверьте это:
$ общ.
dir1 и Директория dir2 dir3 фрлец fileB fileaбыл
Теперь рассчитывать можно воспользоваться туалетом -л
, чтобы подсчитать количество строк, которые соответствуют файлу или каталогу в ЛС -1
выходной.
$ Общ -1 | туалет -л
6
(заметим, однако, что он не включает скрытые файлы)
Подсчет файлов или каталогов, просто не вместе
Рассчитывать либо файлы или папки, вам нужно немного изменить свою тактику. В данном случае я бы использовать ЛС-л
, поскольку она показывает, что такое каталог и что такое файл.
Пример
$ Общ -л
итого 12
drwxrwxr-X от 16 09 2 SAML в основе SAML 4096 ноября:48 dir1 и
drwxrwxr-X от 16 09 2 SAML в основе SAML 4096 ноября:48 директория dir2
drwxrwxr-X от 16 09 2 SAML в основе SAML 4096 ноября:48 dir3
-РВ-РВ-Р-- 1 SAML в основе SAML 0 16 ноября 09:49 fileaбыл
-РВ-РВ-Р-- 1 SAML в основе SAML 0 16 ноября 09:49 fileB
-РВ-РВ-Р-- 1 SAML в основе SAML 0 16 ноября 09:49 фрлец
Затем мы можем использовать команду grep
, чтобы отфильтровать каталоги или каталоги как так:
каталоги #
$ ЛС-л | команда grep "^д"
drwxrwxr-X от 16 09 2 SAML в основе SAML 4096 ноября:48 dir1 и
drwxrwxr-X от 16 09 2 SAML в основе SAML 4096 ноября:48 директория dir2
drwxrwxr-X от 16 09 2 SAML в основе SAML 4096 ноября:48 dir3
# обычные файлы
$ ЛС-л | команда grep "^-"
-РВ-РВ-Р-- 1 SAML в основе SAML 0 16 ноября 09:49 fileaбыл
-РВ-РВ-Р-- 1 SAML в основе SAML 0 16 ноября 09:49 fileB
-РВ-РВ-Р-- 1 SAML в основе SAML 0 16 ноября 09:49 фрлец
Теперь просто использовать туалет -я
снова посчитать выше:
каталоги #
$ Общ -л | команда grep "^д" | туалет -л
3
# обычные файлы
$ Общ -л | команда grep "^-" | туалет -л
3
Хотя, вы можете не туалет
вовсе, а использовать команду grep
'ы -с
вариантом:
$ Общ -л | грэп -с '^д'
(опять же, скрытые файлы не включены. Обратите внимание, что каталоги и регулярные два типа файлов. Есть много таких, как именованные каналы, символические ссылки, приборами, розетки...).
Рекурсия
Если вам нужно найти файлы и каталоги рекурсивно под /usr/Бен
тогда вы, вероятно, хотите, чтобы изменить тактику и воспользоваться другим инструментом под названием Найти
.
Пример
$ найти /usr/Бен | туалет -л
4632
(хотя выше /usr/Бен
сам включен в счет)
Те же методы, которые я использовал выше, могут быть использованы использовать ЛС
, чтобы сделать что-то подобное, но ЛС
- это вообще не очень хороший инструмент для анализа выходных данных. найти
с другой стороны была построена для этого, и предлагает переключатели, чтобы найти файлы или каталоги.
# найти файлы
$ найти /usr/Бен -типа F
# найти каталоги
$ найти /usr/Бен -тип D
(обратите внимание, что в этот раз найти
это в том числе и скрытые файлы (кроме .
а ..
)).
строками?
Я никогда не понимал, почему символ новой правовой характер для использования при создании имен файлов и имен каталогов. Поэтому методы, описанные выше, используя туалет
и Общ
бы не бороться с этим, так что используйте их с это в виду.
Пример
Создать файл каталога с новыми строками.
$ команды mkdir $'\dir4 Н5'
$ касания $'подал\нэ'
команда ls
показывает их правильно:
$ Общ -1
из dir1
директория dir2
dir3
dir4?5
fileaбыл
fileB
фрлец
подала?Е
Но туалет
подсчитывает каталоги и файлы, содержащие символы новой строки, как 2 элемента, а не один.
$ Общ -1 | туалет -л
10
Один способ обойти это, если с помощью GNU реализация найти
в Найти
способность печатать что-то еще на месте всех файлов, которые он находит, а затем сосчитать их.
Пример
$ найти . -е . | душ -с
9
Здесь мы находим все в текущем каталоге (за исключением ..
), и точка (.
) для каждого, и потом рассчитывает точки с помощью туалетом
, умение подсчитывать байты вместо линий, сан. узел-Си
.