How to get the list of files in a directory in a shell script?
List different types of files using find and ls
- For
find
, see this answer
. See also my comment here
. - For
ls
, see linuxhandbook.com: How to List Only Directories in Linux
Tip:
for any of the find
examples below, you can pipe the output to sort -V
if you’d like it sorted.
find . -maxdepth 1 -type f | sort -V List only regular files
( -type f
) 1 level deep:
# General form
find "path/to/some/dir" -maxdepth 1 -type f
# In current directory
find . -maxdepth 1 -type f List only symbolic links
( -type l
) 1 level deep:
# General form
find "path/to/some/dir" -maxdepth 1 -type l
# In current directory
find . -maxdepth 1 -type l List only directories
( -type d
) 1 level deep:
Note that for the find
example here, we also add -mindepth 1
in order to exclude the current directory, .
, which would be printed as .
at the top of the directory list otherwise. See here: How to exclude this / current / dot folder from find “type d”
# General form
find "path/to/some/dir" -mindepth 1 -maxdepth 1 -type d
# In current directory
find . -mindepth 1 -maxdepth 1 -type d
# OR, using `ls`:
ls -d Combine some of the above: list only regular files
and symbolic links
( -type f,l
) 1 level deep:
Use a comma ( ,
) to separate arguments to -type
:
# General form
find "path/to/some/dir" -maxdepth 1 -type f,l
# In current directory
find . -maxdepth 1 -type f,l Capture the output of any command into a bash indexed array, with elements separated by the newline char (\n)
However,
$search_dir
contains many files with whitespaces in their names. In that case, this script does not run as expected.
This is solved by telling bash to separate elements in the string based on the newline char \n
instead of the space char–which is the default IFS
(Internal Field Separator–see The Meaning of IFS
in Bash Scripting
) variable used by bash. To do this, I recommend using the mapfile
command.
The bash script static code analyzer tool named shellscript
recommends using mapfile
or read -r
whenever you want to read in a string into a bash array, separating elements based on the newline char ( \n
). See: https://github.com/koalaman/shellcheck/wiki/SC2206
.
(Back to my original answer:)
Here is how to convert a newline-separated string into a regular bash “indexed” array with the mapfile
command
.
# Capture the output of `ls -1` into a regular bash "indexed" array.
# - includes both files AND directories!
mapfile -t allfilenames_array <<< "$(ls -1)"
# Capture the output of `find` into a regular bash "indexed" array
# - includes directories ONLY!
# Note: for other `-type` options, see `man find`.
mapfile -t dirnames_array \ <<< "$(find . -mindepth 1 -maxdepth 1 -type d | sort -V)" - We use
ls -1
(that’s a “dash numeral_one”) in order to put each filename on its own line, thereby separating them all by the newline\n
char. - If you’d like to Google it,
<<<
is called a “here string” in bash. - See
mapfile --help
, orhelp mapfile
, for help.
Full code example:
From file array_list_all_files_and_directories.sh
in my eRCaGuy_hello_world
repo:
echo "Output of 'ls -1'"
echo "-----------------"
ls -1
echo ""
# Capture the output of `ls -1` into a regular bash "indexed" array.
# - includes both files AND directories!
mapfile -t allfilenames_array <<< "$(ls -1)"
# Capture the output of `find` into a regular bash "indexed" array
# - includes directories ONLY!
# Note: for other `-type` options, see `man find` and see my answer here:
# https://stackoverflow.com/a/71345102/4561887
mapfile -t dirnames_array \ <<< "$(find . -mindepth 1 -maxdepth 1 -type d | sort -V)"
# Get the number of elements in each array
allfilenames_array_len="${#allfilenames_array[@]}"
dirnames_array_len="${#dirnames_array[@]}"
# 1. Now manually print all elements in each array
echo "All filenames (files AND dirs) (count = $allfilenames_array_len):"
for filename in "${allfilenames_array[@]}"; do echo " $filename"
done
echo "Dirnames ONLY (count = $dirnames_array_len):"
for dirname in "${dirnames_array[@]}"; do # remove the `./` from the beginning of each dirname dirname="$(basename "$dirname")" echo " $dirname"
done
echo ""
# OR, 2. manually print the index number followed by all elements in the array
echo "All filenames (files AND dirs) (count = $allfilenames_array_len):"
for i in "${!allfilenames_array[@]}"; do printf " %3i: %s\n" "$i" "${allfilenames_array["$i"]}"
done
echo "Dirnames ONLY (count = $dirnames_array_len):"
for i in "${!dirnames_array[@]}"; do # remove the `./` from the beginning of each dirname dirname="$(basename "${dirnames_array["$i"]}")" printf " %3i: %s\n" "$i" "$dirname"
done
echo "" eRCaGuy_hello_world/python$ ../bash/array_list_all_files_and_directories.sh
Output of 'ls -1'
-----------------
autogenerate_c_or_cpp_code.py
autogenerated
auto_white_balance_img.py
enum_practice.py
raw_bytes_practice.py
slots_practice
socket_talk_to_ethernet_device.py
textwrap_practice_1.py
yaml_import
All filenames (files AND dirs) (count = 9): autogenerate_c_or_cpp_code.py autogenerated auto_white_balance_img.py enum_practice.py raw_bytes_practice.py slots_practice socket_talk_to_ethernet_device.py textwrap_practice_1.py yaml_import
Dirnames ONLY (count = 3): autogenerated slots_practice yaml_import
All filenames (files AND dirs) (count = 9): 0: autogenerate_c_or_cpp_code.py 1: autogenerated 2: auto_white_balance_img.py 3: enum_practice.py 4: raw_bytes_practice.py 5: slots_practice 6: socket_talk_to_ethernet_device.py 7: textwrap_practice_1.py 8: yaml_import
Dirnames ONLY (count = 3): 0: autogenerated 1: slots_practice 2: yaml_import Я пока только постигаю python, прошу помочь. Суть проблемы: надо написать программу, которая запрашивает у пользователя путь к каталогу и выводит в консоль его содержимое в виде списка файлов и каталогов. Для каждого элемента списка программа должна выводить имя, тип (файл или каталог), дату создания и размер (в кибибайтах, только для файлов). Список должен быть отсортирован по имени по возрастанию
Результат работы приложения должен выводиться в консоль в следующем виде:
Имя файла Тип Дата создания Размер (КиБ)
--------- --- ------------- ------------
.idea Каталог 2015.12.31 -
main.py Файл 2015.12.31 15 import os
print("Имя файла Тип Дата создания Размер (КиБ)")
print("--------- --- ------------- ------------")
print(os.path.basename(__file__))
print(os.path.getctime(__file__))
print(os.path.getsize(__file__)) Что выводит у меня:
Имя файла Тип Дата создания Размер (КиБ) --------- --- ------------- ------------ main.py 1625142504.6292036 271 То есть я не знаю как написать функцию для типа (файл или каталог), для даты у меня проблемы (неправильно выводится), а размер выводится скорее всего в байтах, я попробовал перевести в кибибайты умножив на *0.00097656, но размер стал 282, что неверно. Как сделать так, что было как в примере? Заранее спасибо
Требуется сделать простенький скрипт, выводящий на экран название файла и затем его содержимое в задаваемом каталоге. Попробовал модифицировать пример из методички:
cd $1
for f in *.txt
do
cat ${f}
done Однако при запуске возникает ошибка
xred@xred-W65-67SJ:~$ ./7.sh /home/
cat: '*.txt': No such file or directory Что я делаю не так?
В домашнем каталоге гарантированно находится несколько файлов с данным расширением.
задан 4 окт 2017 в 17:16
#!/usr/bin/bash
path_to_dir="$1"
ls -R "${path_to_dir}"/*.txt \
| while read -r txt_file; do echo "$txt_file" cat "$txt_file" done
# End of script В текущем каталоге, достаточно глобального значения пути:
~$ cat ./*.txt Рекурсивно достаточно одного find или grep:
~$ find ./ -type f -name "*.txt" -print -exec cat {} \;
~$ grep -r ".*" ./**/*.txt Проверял с использованием:
- GNU coreutils
- GNU findutils
- GNU grep
ответ дан 4 окт 2017 в 18:40
11 серебряных знаков
33 бронзовых знака
find PATH_DIR -type f | while read FN; do echo $FN; cat $FN; done; ответ дан 4 окт 2017 в 17:34

2 бронзовых знака
- в каталоге
/home
обычно нет ни одного файла. поэтому ничего и не находится. вероятно, вы хотели указать домашний каталог какого-нибудь пользователя. по умолчанию это каталог/home/имя_пользователя
. для того, чтобы не получать сообщение об ошибке в случае, если файлов, подпадающих под маску, действительно нет, помимо предложенных в других ответах решений, можно установить в начале скрипта опцию
nullglob
:shopt -s nullglobсмысл её в том, что если под указанную маску (например,
*.txt
) не подпадает ни одного объекта файловой системы (т.е., нет ни файлов, ни каталогов, ни символических ссылок, имена которых заканчиваются символами.txt
), то результатом подстановки будет не сама маска
—*.txt
(так происходит по умолчанию), а пустая строка.но будьте осторожны. например, если в каталоге нет ни одного файла, подпадающего под маску, то команда вида
ls *.txt
вернёт всё
содержимое каталога, как будто программаls
была вызвана вообще без параметра. а вот командаfor f in *.txt; do тело-цикла; done
отработает так, как и ожидается — тело цикла не будет выполнено ни разу.
ответ дан 5 окт 2017 в 9:10

aleksandr barakin
213 золотых знаков
76 серебряных знаков
218 бронзовых знаков
Программистам часто приходится работать в консоли — например, чтобы запустить тестирование проекта, закоммитить новый код на Github
или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становится быстрее и привычнее выполнять в консоли. Рассказываем и показываем основные команды, которые помогут ускорить работу в терминале под OS Windows.
Для начала нужно установить терминал
или запустить командную строку, встроенную в Windows — для этого нажмите Win+R
и введите cmd
. Терминал часто встречается и прямо в редакторах кода, например, в Visual Studio Code
.
Чтобы ввести команду в консоль, нужно напечатать её и нажать клавишу Enter
.
Содержимое текущей папки — dir
Выводит список файлов и папок в текущей папке.
C:\content-server>dir Том в устройстве C имеет метку SYSTEM Серийный номер тома: 2C89-ED9D Содержимое папки C:\content-server
06.10.2020 00:41 <DIR> .
06.10.2020 00:37 <DIR> .circleci
16.07.2020 16:04 268 .editorconfig
16.07.2020 16:04 10 .eslintignore
16.07.2020 16:04 482 .eslintrc
06.10.2020 00:37 <DIR> .github
16.07.2020 16:04 77 .gitignore
06.10.2020 00:41 <DIR> assets
06.10.2020 00:41 <DIR> gulp
16.07.2020 16:10 379 gulpfile.js
16.07.2020 16:10 296 320 package-lock.json
16.07.2020 16:10 751 package.json
16.07.2020 16:04 509 README.md Открыть файл
Чтобы открыть файл в текущей папке, введите его полное имя с расширением. Например, blog.txt или setup.exe.
Перейти в другую папку — cd
Команда cd
без аргументов выводит название текущей папки.
Перейти в папку внутри текущего каталога:
C:\content-server>cd assets
C:\content-server\assets> Перейти на одну папку вверх:
C:\content-server\assets>cd ..
C:\content-server> Перейти в папку на другом диске:
c:\content-server>cd /d d:/
d:\> Чтобы просто изменить диск, введите c:
или d:
.
Создать папку — mkdir или md
Создаём пустую папку code
внутри папки html
:
d:\html>mkdir coded:\html>dir Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:25 <DIR> code 0 файлов 0 байт 3 папок 253 389 438 976 байт свободно Создаём несколько пустых вложенных папок — для этого записываем их через косую черту:
d:\html>mkdir css\js
d:\html>dir Том в устройстве D имеет метку DATA Серийный номер тома: 0000-0000 Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:25 <DIR> code
03.11.2020 19:29 <DIR> css Создаётся папка css
, внутри которой находится папка js
. Чтобы проверить это, используем команду tree
. Она показывает дерево папок.
Удалить папку — rmdir или rd
Чтобы удалить конкретную папку в текущей, введите команду rmdir
:
d:\html\css>rmdir js При этом удалить можно только пустую папку. Если попытаться удалить папку, в которой что-то есть, увидим ошибку:
d:\html\css>d:\html>rmdir css
Папка не пуста. Чтобы удалить дерево папок, используйте ключ /s
. Тогда командная строка запросит подтверждение перед тем, как удалить всё.
d:\html>rmdir css /s
css, вы уверены [Y(да)/N(нет)]? y Показать дерево папок — tree
В любом момент мы можем увидеть структуру папок. Для этого используется команда tree
.
d:\html>tree
Структура папок тома DATA
Серийный номер тома: 0000-0000
D:.
├───code
└───css └───js Если вы хотите посмотреть содержимое всего диска, введите tree
в корне нужного диска. Получится красивая анимация, а если файлов много, то ещё и немного медитативная.
Удаление файла — del или erase
Команда для удаления одного или нескольких файлов.
d:\html>del blog.txt Переименование файла — ren или rename
Последовательно вводим ren
, старое и новое имя файла.
d:\html>dir Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:59 0 blag.txt
d:\html>ren blag.txt blog.txt
d:\html>dir Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:59 0 blog.txt Команды одной строкой
d:\html>systeminfo
Имя узла: DESKTOP-6MHURG5
Название ОС: Майкрософт Windows 10 Pro
Версия ОС: 10.0.20246 Н/Д построение 20246
Изготовитель ОС: Microsoft Corporation
Параметры ОС: Изолированная рабочая станция
Сборка ОС: Multiprocessor Free Информация о сетевых настройках — ipconfig
.
d:\html>ipconfig
Настройка протокола IP для Windows
Адаптер Ethernet Ethernet 2: Состояние среды. . . . . . . . : Среда передачи недоступна. DNS-суффикс подключения . . . . . : Список запущенных процессов — tasklist
.
c:\>tasklist
Имя образа PID Имя сессии № сеанса Память
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 КБ
System 4 Services 0 2 688 КБ
Secure System 72 Services 0 23 332 КБ
… Справка по командам — help
Команда help
без аргументов выводит список всех возможных команд. help
вместе с именем команды выведет справку по этой команде.
d:\html>help tree
Графическое представление структуры папок или пути.
TREE [диск:][путь] [/F] [/A] /F Вывод имён файлов в каждой папке. /A Использовать символы ASCII вместо символов национальных алфавитов. В этой статье приведены не все команды и не все их возможности, но вы всегда можете воспользоваться командой help
и узнать о том, что ещё может командная строка.
👉🏻 Больше статей о фронтенде и работе в айти в телеграм-канале.
Материалы по теме
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Как видно из синтаксиса, команду DIR можно использовать без параметров. В этом случае команда DIR действует на текущий каталог. На экран выводится метка диска (тома), его серийный номер, имена файлов и подкаталогов, находящихся в текущем каталоге и дата их последнего изменения. Для файлов, указывается их размер, общее количество. Также указывается общее количество папок и объем свободного места на диске. Для примера, применим команду DIR для диска «C»:


Создадим на диске «D» папку «FOLDER» и поместим в нее 2 папки «Folder1» и «Folder2», а также файл «myfolder.txt». Тогда команда dir d:\FOLDER выведет на экран информацию о содержимом каталога «FOLDER».

Команда выведет на экран информацию о текстовых файлах, расположенных в папке «FOLDER».

Ключ /P
применяется в том случае, если содержимое диска или каталога не умещается в одном экране. Для примера, выведем на экран содержимое каталога «Windows»: dir windows /p

На экран будет выведена информация о содержимом каталога Windows. Т.к. все содержимое не умещается в один экран, применяем ключ /P. Для просмотра следующего экрана нажимаем любую клавишу.
Ключ /W
используется в том случае, если необходимо вывести перечень файлов и каталогов в одной строке с максимально возможным их количеством, умещающемся на экране (широкий формат). Файлы и папки выводятся в алфавитном порядке (сортируются по строкам). Например, выведем на экран содержимое диска «С»:

Ключ /D
аналогичен предыдущему ключу /W, однако в данном случае сортировка производится по столбам. Выведем содержимое диска «С»:

- H – на экран выводятся скрытые файлы и папки
- S – на экран выводятся системные файлы и папки
- R – на экран выводятся файлы и папки, с атрибутом «только для чтения»
- A – на экран выводятся файлы и папки с установленным архивным атрибутом
- I – на экран выводятся файлы и папки с неиндексированным содержимым
Для примера, пусть на диске «D» есть папка «FOLDER». В ней находятся 2 папки «Folder1» и «Folder2», а также файл «myfolder.txt». Установим для папки «Folder2» и файла «myfolder.txt» атрибут «скрытый». Тогда команда dir d:\FOLDER a:h
выведет на экран только информацию об этих скрытых файлах.

Ключ /A может использоваться более чем с одним значением атрибута. Например, выведем на экран информацию о папках и файлах, находящихся на диске «С» и имеющих, одновременно, атрибуты «скрытый» и «системный»:

Обратите внимание, что на экран выводятся файлы и папки, которые имеют атрибуты «скрытый» и «системный»
.
Если перед атрибутами поставить знак «-», то на экран будет выводиться информация о файлах и папках, которые не имеют указанный атрибут. Например, команда выведет на экран информацию о файлах и папках, расположенных на диске «C» и не имеющих атрибут «только для чтения».

Если ключ /A употребить с параметром «D», то на экран будет выведена информация только а каталогах. Например, команда выведет на экран информацию о каталогах диска «С», но не выведет информацию о файлах.

Соответственно, если нам необходимо вывести на экран только файлы, то используется ключ /-D. Например, выведем на экран файлы, расположенные на диске «С»:

По умолчанию (без ключа /A), команда DIR выводит на экран имена всех папок и файлов, кроме скрытых и системных. При использовании команды DIR с ключом /A без параметров, на экран выводятся имена всех папок и файлов. Например, команда выведет на экран имена всех папок и файлов (включая системные и скрытые файлы) текущего каталога.
Ключ /S
позволяет выводить информацию о файлах из заданного каталога и его подкаталогов. Для примера, создадим на диске «D» папку «FOLDER», поместим в нее еще 2 папки «Folder1» и «Folder2». В каждую из 3-х папок поместим по одному файлу. Тогда команда dir выведет на экран содержимое основной папки «FOLDER» и всех подпапок «Folder1» и «Folder2».

Теперь, когда вы знаете как перемещаться по каталогам, пришло время взглянуть на содержимое этих каталогов.
Команда ls
сама по себе не показывает всех файлов в вашем каталоге Чтобы увидеть всё, вы должны указать ещё один или два параметра.
Команда ls
воспринимает множество параметров.
Зачем так много параметров? Все они помогают отсортировать информацию, так как вам это нужно. Например, вы можете указать как отображать файлы, показывать ли разрешения и многое другое.

Рисунок 10-6. ls с параметром -a
Введите ls -a
. Теперь вы видите файлы, начинающиеся с точек. Такие файлы называются скрытыми.
Скрытые файлы чаще всего представляют собой конфигурационные файлы, задающие настройки для программ, оконных менеджеров, оболочек и т.д. Они сделаны скрытыми, чтобы предотвратить случайное их повреждение пользователем. Кроме этого, если вы ищете в каталоге что-то, обычно вас не интересуют эти конфигурационные файлы, а так как они скрыты, они не загромождают ваш экран.
Просматривая список файлов с помощью команды ( ls -a
) вы получаете много информации, но указав еще дополнительные параметры, вы сможете увидеть ещё больше.
Если вы хотите увидеть размер файла или каталога, время создания и другие сведения, просто добавьте параметр “long” (длинный) ( -l
) в команду ls -a
:
Эта команда покажет дату создания файла, его размер, владельца, разрешения и т.д.
Вы не обязаны находиться в каталоге, содержимое которого вы просматриваете с помощью команды ls
.
Посмотрите, что находится в каталоге /etc
выполнив:
Вы получите массу информации о содержимом каталога /etc
.
Ниже приводится список некоторых часто используемых параметров команды ls
. Не забывайте о том, что вы можете получить полный список параметров в руководстве, на странице ls
( man ls
).
-a
— all (все). Показывает все файлы в каталоге, включая скрытые файлы ( .filename
). Каталоги .
и .
вверху этого списка обозначают родительский и текущий каталог соответственно.-l
— long (длинный). Выводит информацию о содержимом, включая разрешения (режимы), владельца, группу, размер, дату создания, является ли этот файл ссылкой на что-то другое в системе, и если да, то куда указывает эта ссылка.-r
— reverse (обратный). Показывает содержимое каталога от конца к началу.-R
— recursive (рекурсивный). Этот параметр также показывает содержимое всех каталогов, вложенных в текущий.-S
— size (размер). Сортирует файлы по их размеру.
Чуть позже в этой главе, когда вы познакомитесь с перенаправлением ввода/вывода, вы откроете для себя другие способы просмотреть содержимое каталога.
![]()
![]()
![]()
![]()
![]()
Next:
Копирование файлов и каталогов
Up:
Работа с файлами
Previous:
Перемещение по каталогам
Contents
Index
Просмотр каталогов
$ ls [Enter] apple cherry orange $
Чтобы просмотреть содержимое подкаталога `work’ в текущем каталоге, введите:
Чтобы просмотреть содержимое каталога `/usr/doc’, введите:
Из листинга по умолчанию Вы не сможете отличить каталоги и исполняемые файлы
от обычных. Используйте ключ `-F’, который заставит ls поместить символ `/’
после имен подкаталогов и символ `*’ после имен исполняемых файлов:
$ ls -F [Enter] repeat* test1 test2 words/ $
В этом примере текущий рабочий каталог содержит исполняемый файл `repeat’,
каталог `words’, и несколько файлов других типов `test1′ и `test2′.
Еще один способ просмотра содержимого каталогов – использование
“менеджера файлов”
, которых для Linux создано достаточно много;
наиболее популярным является “Midnight Commander” или mc.
Чтобы вывести более подробный листинг каталога, используйте ls с ключом `-l’
(“long”). Листинг будет содержать размер каждого файла в байтах, время
последней модификации, тип файла, имя владельца и права доступа.
Для вывода подробной информации о каталоге `/usr/doc/bash’, введите:
$ ls -l /usr/doc/bash [Enter] total 72 -rw-r--r-- 1 root root 13744 Oct 19 22:57 CHANGES.gz -rw-r--r-- 1 root root 1816 Oct 19 22:57 COMPAT.gz -rw-r--r-- 1 root root 16398 Oct 19 22:57 FAQ.gz -rw-r--r-- 1 root root 2928 Oct 19 22:57 INTRO.gz -rw-r--r-- 1 root root 4751 Oct 19 22:57 NEWS.gz -rw-r--r-- 1 root root 1588 Oct 19 22:57 POSIX. NOTES.gz -rw-r--r-- 1 root root 2718 Oct 19 22:57 README. Debian.gz -rw-r--r-- 1 root root 19596 Oct 19 22:57 changelog.gz -rw-r--r-- 1 root root 1446 Oct 19 22:57 copyright drwxr-xr-x 9 root root 1024 Jul 25 1997 examples $
Первая колонка указывает тип файла и права доступа к нему. Первый символ в
этой колонке определяет тип файла; тире (`-‘) означает обычный файл (по
умолчанию). Каталоги обозначаются буквой `d’, а символические ссылки – буквой
`l’. Остальные девять символов в первой колонке указывают права доступа к
файлу. Вторая колонка указывает количество жестких ссылов на файл. Третья и
четвертая колонки указывают пользователя и группу, которые владеют этим
файлом. Пятая колонка содержит размер файла в байтах, шестая – время и дату
последней модификации файла, а в последней колонке указано имя файла, к
которому относится информация.
Чтобы просмотреть каталог рекурсивно, то есть со всеми содержащимися в нем
подкаталогами, используйте опцию `-R’. Например, для текущего каталога введите:
$ ls -R [Enter] play work play: notes work: notes $
Обычно этот ключ комбинируют с опцией `-l’, чтобы вывести наиболее полный
листинг файлов системы:
Примечание:
Некоторые каталоги могут не попасть в листинг, если у Вас нет права
доступа к ним.
Чтобы отсортировать список файлов в каталоге по времени создания или
модификации, используйте опцию `-t’. Например, чтобы вывести список файлов в
каталоге `/usr/tmp’, чтобы самые новые файлы были вверху списка, введите:
По умолчанию, ls не выводит имена файлов, начинающиеся с символа “точка”
(`.’). Чтобы уменьшить листинг, многие приложения “скрывают”
файлы
конфигурации в Вашем домашнем каталоге, присваивая им имена, начинающиеся с
точки; они называются dot-файлы, или “скрытые”
. Каждый каталог имеет
два специальных dot-файла: `.’ – родительский каталог и `.’ – сам этот
каталог.
Чтобы увидеть все файлы в каталоге, включая скрытые, используйте опцию `-a’.
Например, для текущего каталога:
Чтобы увидеть все файлы, исключая специальные `.’ и `.’, используйте опцию
`’-A:
Чтобы увидеть цветной листинг каталога, используйте ls с ключом `--color'
; тогда все имена файлов будут выведены разными цветами, в зависимости от их
содержания. По умолчанию каталоги выводятся синим, текстовые файлы – белым,
исполняемые – зеленым и т.д.
Примечание:
Обычно для команды `ls -color’ создается псевдоним `ls’, так что
листинг выводится в цвете по умолчанию.
Для того, чтобы вывести граф иерархии каталогов, используйте утилиту tree.
Например, для вывода дерева каталогов, начиная с текущего, наберите:
$ tree [Enter] . |-- projects | |-- current | `-- old | |-- 1 | `-- 2 `-- trip `-- schedule.txt 4 directories, 3 files $
В этом примере выводится дерево каталогов, в котором текущий каталог содержит
два подкаталога `projects’ и `trip’; а каталог `projects’, в свою очередь,
содержит подкаталоги `current’ и `old’.
Чтобы вывести дерево каталогов для определенного каталога, укажите его имя в
качестве аргумента tree. Например, для Вашего домашнего каталога, введите:
Чтобы вывести дерево каталогов, в котором будут присутствовать только имена
каталогов, используйте опцию `-d’. Это полезно при выводе полного дерева
каталогов системы:
Команда ls имеет много опций для управления листингом и отображаемой
информацией о файлах; приведенная таблица описывает некоторые из них.
Примечание:
Вы можете комбинировать опции в любом порядке; например, чтобы вывести
список файлов, отсортированный по времени, со всеми атрибутами, введите `-lt’.
Чтобы рекурсивно отобразить все скрытые файлы и их атрибуты, используйте `-lRa’.
Порядок опций не имеет значения, так что `-lRa’ означает то же самое, что и
`-alR’.
![]()
![]()
![]()
![]()
![]()
Next:
Копирование файлов и каталогов
Up:
Работа с файлами
Previous:
Перемещение по каталогам
Contents
Index
2002-12-16
-
01.11.2020 -
12 771 -
14 -
0

Описание
DIR
– Выводит список файлов и подкаталогов каталога. Вызванная без параметров команда dir выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения. Для файлов dir выводит также расширение имени и размер в байтах. Команда dir также выводит общее число перечисленных файлов и каталогов, их общий размер и свободное пространство (в байтах) на диске.
Синтаксис
dir [диск:][путь][имя_файла] [...] [/p] [/q] [/w] [/d] [/a[[:]атрибуты]][/o[[:]порядок_сортировки]] [/t[[:]поле_сортировки]] [/s] [/b] [/l] [/n] [/x] [/c] [/4] . . . . . . .
Параметры
Примечания
- Использование нескольких имен_файлов
Допускается использование нескольких имен_файлов
. Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла
. - Использование подстановочных знаков. Для вывода списка подгруппы файлов и подкаталогов можно использовать подстановочные знаки (? и *).
- Задание атрибутов файлов для вывода. Если параметр /a
используется более чем с одним значением параметра атрибуты
, команда dir
выведет имена только тех файлов, все атрибуты которых совпадают с заданными. Например, при использовании параметра /a
со значениями атрибутов r
и -h
в формате /a:r-h
или /ar-h
команда dir
выведет имена файлов, являющихся одновременно скрытыми и защищенными от записи. - Указание порядка сортировки имен файлов. Если указано несколько значений порядка_сортировки
, команда dir
сортирует имена файлов сначала по первому условию, затем — по второму и т. д. Например, если указан ключ /o
со значениями e
и -s
порядка_сортировки
в формате /o:e-s
или /oe-s
, команда dir
отсортирует имена каталогов и файлов по расширениям, затем от больших файлов к меньшим и выведет окончательный результат. В результате сортировки по алфавиту файлы без расширений будут идти вначале, затем имена каталогов, а потом имена файлов с расширениями. - Использование перенаправления и каналовЧтобы перенаправить вывод команды dir
в файл с помощью символа (>) или использовать канал (|) для передачи вывода в другую команду, необходимо использовать параметры команды dir
/a:-d
и /b
для вывода только списка имен файлов. Параметр имя_файла
с параметрами /b
и /s
можно использовать, чтобы указать поиск командой dir
в текущем каталоге и его подкаталогах всех файлов, соответствующих значению имя_файла
. При этом команда dir
выведет только имя диска, имя каталога, имя файла и расширение по одному файлу в строке. Чтобы использовать перенаправление с помощью каналов, в файле Autoexec.nt должна быть установлена переменная среды TEMP. - Предварительное задание параметров команды dir.
Параметры команды dir
могут быть предварительно заданы включением команды set
для переменной среды DIRCMD в файл Autoexec.nt. В команде set dircmd
может быть использована любая допустимая комбинация параметров команды dir
, включая расположение и имя файла. Например, чтобы использовать переменную среды DIRCMD для задания вывода в расширенном формате ( /w
) по умолчанию, в файле Autoexec.nt необходимо ввести следующую строку: set dircmd=/w
При однократном использовании команды dir
можно отменить параметр с помощью переменной среды DIRCMD. Для этого введите параметр, который требуется отменить, в командной строке dir
, указав перед ним знак минус. Например:Чтобы изменить параметры DIRCMD, используемые по умолчанию, введите следующую команду:
Новые параметры по умолчанию останутся в силе для всех последующих команд dir
, пока команда set dircmd
не задаст новые параметры или не будет перезагружен компьютер.Чтобы удалить все параметры по умолчанию, введите следующую команду:
Чтобы просмотреть текущие параметры переменной среды DIRCMD, введите следующую команду:
- Команда dir
с другими параметрами доступна в консоли восстановления.
Примеры использования
Чтобы вывести подряд все каталоги в алфавитном порядке, в несколько колонок и с паузой после заполнения каждого экрана, убедитесь, что корневой каталог является текущим, и введите следующую команду:
dir /s/w/o/p Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.
Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду:
dir /s/w/o/p/a:-d Чтобы напечатать список каталогов, введите следующую команду:
dir > prn Если указать параметр prn, список каталогов отправляется на принтер, подключенный к порту LPT1. Если принтер подключен к другому порту, необходимо заменить параметр prn именем этого порта.
Вывод команды dir также может быть направлен в файл при замене prn на имя файла. Кроме того, можно также ввести путь. Например, для направления вывода команды dir в файл Dir.doc в каталоге Records введите следующую команду:
Если файл Dir.doc не существует, команда dir создаст его при условии наличия каталога Records. Если этот каталог не существует, выводится следующее сообщение: Ошибка создания файла
Ошибка создания файла Чтобы вывести список всех файлов с расширением .txt во всех каталогах диска C, введите следующую команду:
dir c:\*.txt /w/o/s/p Команда dir выводит на экран алфавитный список файлов, удовлетворяющих заданному шаблону, в несколько колонок с паузой после заполнения каждого экрана.
Справочная информация

CMD Список команд, отсортированный в алфавитном порядке. Также у каждой команды в скобках указано откуда она может быть запущена. CMD – только PowerShell – может быть запущена, отовсюду, т.е. как из CMD, оболочки PowerShell
09.02.2017
21 697
04.10.2021
46
Описание
– это интерпретатор командной строки (от англ. command line interpreter). Его еще называют cmd.exe
, командной строкой
или command prompt
. Появился он по компьютерным меркам уже очень давно, еще в Windows NT. Командная строка позволяет пользователю ПК, путем ввода в различных команд – осуществлять базовые действия в Операционной Системе. Например, скопировать/удалить файл, создать папку, посмотреть или поменять текущую дату и многое, многое другое. На данной странице представлены основные команды, доступные в ОС Windows, а так же некоторые консольные утилиты, которыми вы можете воспользоваться для реализации своих идей.
внутри командной строки,
, так и с помощью связки “Пуск-Выполнить”. Список команд
Таблица доступных команд
Описание команды DIR
Команда DIR выводит список файлов и подкаталогов каталога. Вызванная без параметров команда dir выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения. А для для просмотра дерева каталогов используется команда TREE
.
Для файлов dir выводит также расширение имени и размер в байтах. Команда dir также выводит общее число перечисленных файлов и каталогов, их общий размер и свободное пространство (в байтах) на диске.
Синтаксис и параметры команды DIR
- [диск:][путь]
– Задание диска и каталога, список файлов которого будет выведен.
- [имя_файла]
– Задание файла или группы файлов, сведения о которых требуется вывести.
- /p
– Постраничный вывод сведений, т. е. с паузой после заполнения экрана. Для продолжения просмотра необходимо нажать любую клавишу.
- /q
– Вывод сведений о владельце файла.
- /w
– Вывод сведений в несколько колонок до пяти имен файлов или каталогов в каждой строке.
/d
– Соответствует /w, но с сортировкой по столбцам.
/a [[:] атрибуты]
– Выводит имена только тех файлов и каталогов, которые имеют указанные атрибуты. Если параметр /a не указан, команда dir выводит имена всех файлов, за исключением системных и скрытых. Если параметр /a указан без атрибутов, команда dir выводит имена всех файлов, включая скрытые и системные. Ниже приведен список значений, которые могут быть использованы при задании параметра атрибуты. Двоеточие (:) является необязательным. Значения из таблицы могут использоваться в любых комбинациях без пробела между ними.
dir [диск:][путь][имя_файла] [...] [/p] [/q] [/w] [/d] [/a[[:]атрибуты]][/o[[:]порядок_сортировки]] [/t[[:]поле_сортировки]] [/s] [/b] [/l] [/n] [/x] [/c] [/4]
/o [[:]порядок_сортировки]- Управление порядком сортировки и вывода имен файлов и каталогов командой dir. Если параметр /o, не задан, команда dir выводит имена в том порядке, в котором они записаны в каталоге. Если параметр /o использован без параметра порядок_сортировки, команда dir выводит имена каталогов в алфавитном порядке, затем — имена файлов в алфавитном порядке. Двоеточие (:) является необязательным. Ниже приведен список значений, которые могут быть использованы при задании параметра порядок_сортировки. Допускается использование любого их сочетания без пробелов между ними.
- /t [[:]поле_времени] -
Задание поля времени для вывода и сортировки. Ниже приведен список значений, которые могут быть использованы при задании параметра поле_времени.
- /s
- Перечисление всех случаев обнаружения определенного имени файла в указанном каталоге и всех его подкаталогах.
- /b
- Перечисление каждого имени файла (включая расширение) или каталога на отдельной строке. При использовании параметра /b заголовочные сведения или сводка не выводятся. Параметр /b отменяет параметр /w.
- /l
- Вывод несортированного списка имен каталогов и имен файлов строчными буквами. Параметр /l не позволяет преобразовывать дополнительные символы в строчные.
- /n
- Вывод списка в расширенном формате с именами файлов в правой части экрана.
- /x
- Вывод сокращенных имен файлов файловых систем NTFS и FAT. Формат совпадает с форматом параметра /n, но сокращенные имена выводятся после полных.
- /c
- Вывод разделителя десятичных разрядов в размере файлов.
- /?
- Отображение справки в командной строке для команды DIR.Примеры команды DIR
- Чтобы вывести подряд все каталоги в алфавитном порядке, в несколько колонок и с паузой после заполнения каждого экрана, убедитесь, что корневой каталог является текущим, и введите следующую команду: dir /s/w/o/p
- Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.
- Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду: dir /s/w/o/p/a:-d
- Чтобы напечатать список каталогов, введите следующую команду: dir > prn.
Если указать параметр prn, список каталогов отправляется на принтер, подключенный к порту LPT1. Если принтер подключен к другому порту, необходимо заменить параметр prn именем этого порта.- Вывод команды dir также может быть направлен в файл при замене prn на имя файла. Кроме того, можно также ввести путь. Например, для направления вывода команды dir в файл Dir.doc в каталоге Records введите следующую команду: dir > \records\dir.doc.
Если файл Dir.doc не существует, команда dir создаст его при условии наличия каталога Records.- Чтобы вывести список всех файлов с расширением .txt во всех каталогах диска C, введите следующую команду: dir c:\*.txt /w/o/s/p.


