Skip to content

dictovod/ls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

ls.cmd - Аналог Unix-команды ls для Windows CMD

ls.cmd — это мощный и гибкий скрипт для Windows Command Prompt (cmd), который эмулирует поведение Unix-команды ls. Он позволяет отображать содержимое директорий, включая файлы и папки, с различными опциями, такими как рекурсивный поиск, вывод полных путей, фильтрация по типам файлов и отображение содержимого файлов, аналогично команде type. Скрипт разработан с учётом поддержки UTF-8 для корректного отображения имён файлов на русском и других языках.

Возможности

  • Отображение содержимого директории: Показывает файлы в текущей папке с полными путями по умолчанию.
  • Рекурсивный поиск: Поддерживает отображение файлов и папок в подпапках с опцией /s.
  • Полные пути: Выводит полные пути к файлам рекурсивно с опцией /d.
  • Вывод содержимого файлов: Показывает содержимое файлов, как команда type, с опцией /t.
  • Фильтрация: Позволяет показывать только файлы (/f) или использовать маску (например, *.exe).
  • Подробный режим: Отображает дату, время и размер файлов/папок с опцией /l.
  • Размер папок: Показывает размер файлов и папок с опцией /v (использует PowerShell для папок).
  • Поддержка UTF-8: Корректно отображает имена файлов на русском и других языках.

Установка

  1. Скачайте скрипт:

    • Загрузите файл ls.cmd из репозитория: https://github.com/dictovod/ls/blob/main/ls.cmd.
    • Или используйте команду для скачивания (требуется curl или wget):
      curl -o ls.cmd https://raw.githubusercontent.com/dictovod/ls/main/ls.cmd
  2. Разместите скрипт:

    • Скопируйте ls.cmd в директорию, доступную через переменную PATH, например:
      copy ls.cmd C:\Windows
    • Это позволит запускать команду ls из любой папки в cmd.
  3. Проверьте права доступа:

    • Убедитесь, что у вас есть права на выполнение скрипта и доступ к папке C:\Windows (или другой выбранной директории).
  4. Требования:

    • Windows 7 или новее.
    • PowerShell (для опции /v, которая вычисляет размер папок).
    • Командная строка (cmd) с поддержкой UTF-8 (chcp 65001 включён в скрипте).

Использование

Запустите команду ls в cmd из любой директории. Без параметров ls показывает полные пути к файлам в текущей папке (без рекурсии). Поддерживаются дополнительные опции и маски для фильтрации.

Синтаксис

ls [опции] [маска]

Опции

  • /s — Рекурсивный список (включает файлы и папки из подпапок).
  • /d — Выводит полные пути ко всем файлам рекурсивно (аналог find . -type f в Unix).
  • /f — Показывать только файлы (игнорировать папки).
  • /l — Подробный режим (показывает дату, время и размер).
  • /v — Показывать размер файлов и папок (медленнее для папок, использует PowerShell).
  • /t — Выводит содержимое файлов, как команда type. С /d — рекурсивно.
  • /h или /? — Показать справку.
  • маска — Фильтр файлов, например, *.exe или *.txt.

Поведение по умолчанию

Без параметров (ls) скрипт выводит полные пути к файлам в текущей директории (без рекурсии). Это эквивалентно команде dir /b | findstr "\.[a-zA-Z0-9]*$", но с поддержкой UTF-8 и более гибкими настройками.

Примеры

  1. Показать файлы в текущей папке (полные пути):

    ls

    Вывод:

    [Список файлов с полными путями]
    C:\Users\user\Documents\file1.txt
    C:\Users\user\Documents\script.py
    
  2. Показать содержимое файлов в текущей папке:

    ls /t

    Вывод:

    [Содержимое файлов в текущей папке]
    === Содержимое файла: C:\Users\user\Documents\file1.txt ===
    Hello, world!
    
    === Содержимое файла: C:\Users\user\Documents\script.py ===
    print("Hello, world!")
    
    
  3. Показать содержимое файлов рекурсивно:

    ls /d /t

    Вывод:

    [Содержимое файлов с полными путями рекурсивно]
    === Содержимое файла: C:\Users\user\Documents\file1.txt ===
    Hello, world!
    
    === Содержимое файла: C:\Users\user\Documents\subfolder\file2.txt ===
    Another file content
    
    
  4. Рекурсивный список файлов и папок:

    ls /s

    Вывод:

    [Рекурсивный список]
    file1.txt
    subfolder\file2.txt
    
  5. Полные пути ко всем файлам рекурсивно:

    ls /d

    Вывод:

    [Список файлов с полными путями]
    C:\Users\user\Documents\file1.txt
    C:\Users\user\Documents\subfolder\file2.txt
    
  6. Показать только файлы с подробной информацией:

    ls /f /l

    Вывод:

    [Текущая папка]
    27.09.2025 08:50    1024 bytes   C:\Users\user\Documents\file1.txt
    
  7. Показать файлы с расширением .txt с размерами:

    ls /l /v *.txt

    Вывод:

    [Текущая папка]
    27.09.2025 08:50    1024 bytes   C:\Users\user\Documents\file1.txt
    

Ограничения

  • Опция /v (показ размера папок) использует PowerShell, что может быть медленно для больших директорий.
  • Опция /t работает с текстовыми файлами. Для двоичных файлов (например, .exe, .jpg) вывод может быть нечитаемым.
  • В некоторых случаях имена файлов с нестандартными символами могут отображаться некорректно, если кодировка терминала не настроена на UTF-8.
  • Требуется доступ к PowerShell для вычисления размера папок (опция /v).

Устранение неполадок

  • Команда не найдена: Убедитесь, что ls.cmd находится в папке, указанной в переменной PATH (например, C:\Windows). Проверьте PATH:

    echo %PATH%
  • Пустой вывод: Если команда ls не возвращает файлы, проверьте, есть ли файлы с расширениями в текущей папке:

    dir /b
  • Ошибки доступа: Если вы видите "Access denied" при использовании /t или других опций, проверьте права доступа к файлам или папкам:

    icacls "C:\path\to\folder"
  • Проблемы с кодировкой: Если имена файлов или их содержимое отображаются некорректно, убедитесь, что терминал использует UTF-8:

    chcp 65001
  • Нечитаемый вывод для двоичных файлов: Если при использовании /t выводятся нечитаемые символы, замените type на more в скрипте или фильтруйте текстовые файлы с помощью маски (например, ls /t *.txt).

Лицензия

Этот скрипт распространяется под лицензией MIT. Подробности см. в файле LICENSE в репозитории.

Автор

Создано пользователем dictovod. Если у вас есть предложения или исправления, создайте issue или pull request в репозитории: https://github.com/dictovod/ls.

About

LS аналог команды ls для Windows, реализованный на Batch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published