2 вывести список всех файлов упорядоченный по размеру файла
Я пытаюсь создать текстовый файл, содержащий имя файла (включая полный путь) и размер файла для всех файлов в определенном каталоге и любых его подкаталогах (то есть рекурсивно). В идеале я не хочу запятых в размере файла (но я согласен на них!)
Следующая команда делает это, но без размера файла:
Пример вывода будет выглядеть так:
Я не думаю, что это возможно, используя dir в одиночку, хотя я бы хотел оказаться неправым. Есть ли другой способ сделать это, используя только команды, доступные из командной строки?
Это должно сделать это:
Это не очень эффективно . запускать его для папок, содержащих тонну файлов, может быть отрывочно, поэтому сначала попробуйте на небольших папках.
Из "за /?" текст справки (я использовал «а» вместо «я»)
@Saeed Neamati - вот пример >> C:\Temp\VideoList.txt - Результаты любого процесса, предшествующего ранее, записываются в текстовый файл с именем VideoList , Используя один & GT; перезапишет файл ( если он уже существует ) и используя & GT; & GT; добавит новые результаты в конец, если текстовый файл ( если он уже существует ). Если текстовый файл еще не существует, эта команда записывает новый файл с указанным именем.
это дало мне список файлов * .dwg без размера файла в текстовый файл: @echo off & for /f "tokens=*" %a in ('dir *.dwg /s /b') do echo %~fa >>dwgfiles.txt
Альтернатива № 1: FOR / R является более интуитивным, чем № 2 для меня.
Альтернатива № 2: FOR / F исправляет проблему с «пробелами в именах» в предложении Брайана Адкинса.
Альтернатива № 3: FORFILES будет моим выбором, за исключением того, что путь в двойных кавычках.
Я проверил все альтернативы с каталогом и именами файлов со встроенными пробелами, 200+ символьными именами файлов, именами файлов без расширений и на корне небольшого диска (только на время; немного медленный - как предложил Брайан - но потом выполняет поиск в проводнике Windows, поэтому я установил приложение «Все для поиска»).
Альтернатива № 1: FOR / R
Лучший(?) Пытаясь выяснить, почему решение Брайана не работает для меня, я посмотрел на HELP FOR и решил попробовать подход / R. (Создание файла будет таким же, как в Альтернативе № 2.)
Пример - Работы (другой каталог, чем выше, для демонстрации рекурсии)
Альтернатива № 2: FOR / F
Брайан Адкинс предложил: @echo off & for /f %a in ('dir /s /b') do echo %~fa %~za
исправленный ответ является:
более полный ответ с подавленными каталогами и выводом (добавлением) в файл:
Примечание: «delims = *» указывает символ, не разрешенный в именах файлов.
Примечание: 2-я команда также подавляет каталоги с помощью / a: -d.
Примечание: Сделал заглавную букву имени переменной FOR, чтобы прояснить различие между переменной и параметрами переменной, если кто-то выбирает разные имена переменных.
Примечание: добавляется в файл только для ухмылок, так как ОП запрашивает вывод в файл.
Я полагаю, что мне действительно нужно проверить состояние ECHO и сбросить его.
Проблема - пробелы в именах
Предлагаемое Брайаном решение не обрабатывает имена файлов и папок, содержащие пробелы (по крайней мере, в моей конфигурации Vista).
Пример - Неверно (Без разделителей; Включает подавление каталога для OP, но с размером до и после имени файла для выделения)
Сокращенное имя и размер (неверно 4 из 6 файлов):
Пример - правильный (Обратите внимание на вывод на экран, не добавляется в файл)
Альтернатива № 3: ФАЙЛЫ (Цитата выпуск)
Это решение прямо из последних двух примеров в документации FORFILES ( forfiles /? ).
Объединение этих примеров и запись в файл дает ответ (почти):
Обратите внимание, что путь указан в кавычках в выходных данных.
Неважно, echo on или же echo off переключается
Добавление пустой строки, разделяющей каждый каталог, было бы тривиальным расширением IF.
предосторожность : Использование маски /m *.* не будет возвращать файлы без расширения (как последний файл в примере)!
В сторону : Это записывает файл в каждом каталоге с содержимым только этого каталога:
forfiles /s /c "cmd /c if @isdir==FALSE echo @path @fsize >>ForfilesSubOut.txt" Не то, что хотел ОП, но иногда удобно.
Пример - Работы (но с полным путем в кавычках)
Этот пример включает в себя дополнительный каталог с очень длинным именем файла и именем файла без расширения.
Проблема: путь в кавычках
Итак, есть ли простой способ удалить нежелательные (?) Кавычки в примере с OP и сохранить Альтернативу № 3: ФАЙЛЫ. (Риторический вопрос: цитаты - это особенность или недостаток?)
Команда DIR позволяет отобразить список файлов и подкаталогов для указанного каталога. Список может быть отсортирован по множеству критериев, задаваемых параметрами командной строки.
Формат командной строки:
DIR [диск:][путь][имя_файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N] [/O[[:]порядок]] [/P] [/Q] [/S] /T[[:]время]] [/W] [/X] [/4]
Параметры командной строки:
[диск:][путь][имя_файла] - Диск, каталог и/или файлы, которые следует включить в список.
/A - Вывод файлов с указанными атрибутами:
D Каталоги
R Доступные только для чтения
H Скрытые файлы
A Файлы для архивирования
S Системные файлы
Префикс "-" имеет значение НЕ
-S НЕ системные файлы.
/B - Вывод только имен файлов.
/C - Применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения этого режима служит ключ /-C.
/D - Вывод списка в несколько столбцов с сортировкой по столбцам.
/L - Использование нижнего регистра для имен файлов.
/N - Отображение имен файлов в крайнем правом столбце.
/O - Сортировка списка отображаемых файлов.
Порядок: N По имени (алфавитная), S По размеру (сперва меньшие), E По расширению (алфавитная), D По дате (сперва более старые), G Начать список с каталогов. Префикс "-" имеет значение НЕ
/P - Пауза после заполнения каждого экрана.
/Q - Вывод сведений о владельце файла.
/R - Отображение альтернативных потоков файлов.
/S - Вывод списка файлов из указанного каталога и его подкаталогов.
/T - Выбор поля времени для отображения и сортировки
/X - Отображение коротких имен для файлов, чьи имена не соответствуют стандарту 8.3. Формат аналогичен выводу с ключом /N, но короткие имена файлов выводятся слева от длинных. Если короткого имени у файла нет, вместо него выводятся пробелы.
/4 - Вывод номера года в четырехзначном формате
Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены их действия введите в команде те же ключи с префиксом "-", например: /-W.
Примеры использования команды DIR:
DIR /? - отобразить справку по использованию команды.
DIR - отобразить список файлов и подкаталогов текущего каталога.
DIR /P - отобразить список файлов и подкаталогов текущего каталога в режиме постраничного вывода на экран. При выполнении команды DIR с данным ключом, после заполнения экрана, вывод информации приостанавливается до нажатия какой-либо клавиши. Аналогично выполнению команды DIR в цепочке с командой MORE - DIR | MORE
DIR > C:\listdir.txt - отобразить список файлов и подкаталогов текущего каталога с выводом результатов в текстовый файл .
DIR C:\WINDOWS\*.dll - отобразить список файлов с расширением dll из каталога C:\WINDOWS
DIR C:\WINDOWS\SYSTEM32\X*.* - отобразить список файлов из каталога C:\WINDOWS\SYSTEM32, имена которых начинаются с символа X
DIR C:\WINDOWS\SYSTEM32\*Y.EXE - отобразить список файлов с расширением .exe из каталога C:\WINDOWS\SYSTEM32, имена которых заканчиваются символом Y
DIR C:\WINDOWS\system32\. t.* - отобразить список файлов, имя которых содержит 3 любых символа ( . ) и символ t
DIR C:\WINDOWS\SYSTEM32\*.* /A:H - отобразить список скрытых файлов и подкаталогов из каталога C:\WINDOWS\SYSTEM32
DIR C:\WINDOWS\SYSTEM32\*.* /A:H - отобразить список скрытых файлов и подкаталогов из каталога C:\WINDOWS\SYSTEM32
DIR C:\ /A:-AH - отобразить список скрытых ( H ) файлов и подкаталогов из корневого каталога диска C: без атрибута "Архивный" ( -A )
DIR C: /A:DH - отобразить список скрытых каталогов в корне диска C:
dir c:\ /a:DH /d - тоже самое, но с отображением информации в несколько столбцов, с сортировкой имен в алфавитном порядке. Пример результата:
Том в устройстве C имеет метку C
Серийный номер тома: 1884-ABEC
Содержимое папки c:\
[Config.Msi]               [System Volume Information]
0 файлов 0 байт
5 папок 103 593 283 584 байт свободно
Та же информация, но параметр /D не задан:
Том в устройстве C имеет метку C
Серийный номер тома: 1884-ABEC
Содержимое папки c:\
16.01.2013 11:22 Config.Msi
26.04.2012 09:05 Fix-It
25.07.2011 11:31 RECYCLER
03.08.2011 16:06 System Volume Information
24.04.2008 17:36 VCOM
0 файлов 0 байт
5 папок 103 593 283 584 байт свободно
Для сортировки имен отображаемых файлов и каталогов используется параметр /O
/O:N - сортировать по имени в алфавитном порядке( Name ) С использованием знака " - " - сортировать в обратном порядке.
/O:S - сортировать по размеру в возрастающем порядке( Size ). Со знаком " - " - сортировать в порядке убывания размеров файлов.
/O:E - сортировать по расширению имени файла ( Extension ) /O:-E - в обратном порядке
/O:D - сортировать по дате и времени модификации файла или каталога.
/O:-D - в обратном порядке ( от новых к старым )
/O:G - сначала отображать список каталогов, затем - файлов.
Использование параметра /T позволяет отсортировать списки файлов и каталогов в соответствии с отметками времени ( Time Stamp ), хранящимися в файловой системе Windows для каждого из них:
/T:C - сортировать по времени создания ( Creation )
/T:A - сортировать по времени доступа ( Access )
/T:W - сортировать по времени модификации , последней операции записи ( Written ). Этот параметр используется по умолчанию.
dir %temp%\*.* /a:H /TC - отобразить все скрытые файлы и папки в каталоге временных файлов, заданном переменной среды окружения TEMP , и отсортировать их в порядке возрастания даты создания.
dir %SystemRoot%\system32\*.exe /b /a:H /TA - отобразить список скрытых исполняемых файлов в системном каталоге и отсортировать их по времени последнего доступа.
28.01.2013 16:48                              DOCUMENT
DOCUME~2     DOCUMENTS
DOCUME~1      Documents and Settings
В примере отображается список из 3-х каталогов:
DOCUMENT - имя каталога содержит 8 символов и не преобразуется в стандарт 8.3
DOCUMENTS - имя содержит 9 символов и в формате 8.3 представлено как DOCUME~2
Documents and Settings - представлено как DOCUME~1 поскольку длинное имя файла преобразуется в стандарт 8.3 с учетом строчных и заглавных символов, а коды строчных букв следуют в таблице символов перед кодами заглавных.
Параметры командной строки команды DIR можно определить в переменной окружения DIRCMD.
SET DIRCMD=/O:N /B /P - определить параметры /O , /B и /P .
После этого, выполнение команды DIR без параметров будет аналогично выполнению команды:
Если в командной строке команды DIR задан параметр, определенный в переменной DIRCMD, то его значение более приоритетно, и будет использоваться в процессе выполнения данной команды.
Для расширения возможностей команды DIR можно воспользоваться объединением ее в цепочку с командой поиска текстовой информации FIND
DIR C:\*.* /s | FIND "28.01.2013" - отобразить список всех файлов и каталогов диска C: имеющих отметку времени "28 января 2013 г."
Для обработки отдельных полей из строк вывода результатов команды DIR можно воспользоваться командой FOR
Параметр командной строки /R применим только в Windows 7 и более поздних версиях. Он используется для отображения альтернативных потоков файлов в файловой системе NTFS.
dir /r - отобразить список файлов текущего каталога с именами альтернативных потоков.
dir /r proxylist.zip - отобразить список альтернативных потоков файла proxylist.zip . Пример отображаемой информации:
455 881 proxylist.zip
          26 proxylist.zip:$CmdZnID:$DATA
          26 proxylist.zip:Zone.Identifier:$DATA
Альтернативные потоки файлов используются для хранения данных, не связанных с содержимым основного потока (собственно содержимого файла) и на практике применяются для привязки дополнительной информации к этому содержимому. Так, например, многие антивирусы хранят в альтернативных потоках контрольные суммы проверенных на заражение файлов, а система безопасности использует их для определения факта скачивания файлов по сети. Подробнее об альтернативных потоках - в статье Альтернативные потоки NTFS, или как Windows определяет, что файл был загружен из Интернет
Я хотел бы перечислить все файлы в порядке от большого до маленького размера, и файлы могут присутствовать в любом месте определенной папки.
Если вы можете / хотите использовать инструмент с графическим интерфейсом, взгляните на QDirStat , ранее KDirStat .
Просто используйте что-то вроде:
Capital S .
Это позволит отсортировать файлы по размеру.
Если вы хотите отсортировать в обратном порядке, просто добавьте -r переключатель.
Обновить:
Чтобы исключить каталоги (и при условии, что ни одно из имен файлов или целей символических ссылок не содержит символов новой строки):
Обновление 2:
Теперь я вижу, как он все еще показывает символические ссылки, которые могут быть папками. Символические ссылки всегда начинаются с буквы l, как в ссылке.
Измените команду для фильтрации - . Это должно оставить только обычные файлы:
На моей системе это показывает только обычные файлы.
обновление 3:
Чтобы добавить рекурсию, я бы оставил сортировку строк в sort команде и велел ей использовать 5-й столбец для сортировки.
-rn означает Обратный и числовой, чтобы получить самые большие файлы в верхней части. Недостатком этой команды является то, что она не показывает полный путь к файлам.
Если вам нужен полный путь к файлам, используйте что-то вроде этого:
Команда find рекурсивно найдет все файлы во всех подкаталогах . и вызовет du -h (имеется в виду использование диска -humanreadable ), а затем снова отсортирует вывод. Если ваш find / sort не поддерживает -h , замените на du -k и sort -rn . Обратите внимание, что размер и использование диска не одно и то же.
du дает использование диска, которое отличается от размера файла. При использовании (GNU) du -h числовая сортировка не будет работать (вам потребуется -h опция GNU для сортировки). xargs ожидает список возможных слов в кавычках в качестве входных данных, поэтому он не будет работать, если имена файлов содержат пробелы или символы в кавычках.
После @ StéphaneChazelas, это работает для меня: find . -type f -print0 | xargs -0 du -h | sort -rh . Если вы просто хотите сказать , крупнейшие 30 файлов: find . -type f -print0 | xargs -0 du -h | sort -rh | head -n 30 .
Вы можете использовать что-то вроде поиска и сортировки.
(эта -ls опция не является стандартной, но встречается во многих реализациях find, не только в GNU. В GNU find и других, она отображает нечто похожее ls -li с некоторыми исключениями, например, файлы с ACL не помечены знаком +)
Если имена файлов могут содержать символы новой строки, с помощью GNU find и GNU sort:
Предполагается, что столбец «group» (из -ls) не содержит пробелов (следовательно, параметр -k 7), но это не обязательно так.
Где (.OL) это Глобо классификатор , . чтобы выбрать обычные файлы только, OL чтобы в обратный порядок по длине (размер файла, o для возрастающего порядка, O по убыванию).
(обратите внимание, что в старых версиях zsh были проблемы с размерами файлов более 2 ^ 32).
Некоторые операционные системы имеют ограничение на размер списка аргументов, передаваемого команде. В этих случаях вам понадобится:
Если вам нужен только список файлов, а не подробный вывод, просто выполните:
Если вы хотите включить скрытые файлы (имя которых начинается с точки, кроме . и .. ), а также D выполнить поиск в скрытых каталогах, добавьте классификатор globbing:
Спасибо за объяснение, Стефан .. Однако по какой-то причине .. команда не работает на моей рабочей станции .. Я использую ls (GNU coreutils) 8.25 и zsh 5.1.1 (x86_64-ubuntu-linux-gnu) . Это работает только для определенных версий ls и zsh ?
@ alpha_989, каким образом он у тебя не работает? Он работает для меня с теми же версиями, и в этом коде нет ничего, что не работало бы в версиях, по крайней мере, 15 лет назад.
Список файлов по возрастанию размера будет:
- l: long, показывает подробную информацию о пользователе, группе, других атрибутах, дате и т. д.
- S: список заказов по размеру (по убыванию)
- r: обратный порядок листинга
Утверждение, что «файлы могут присутствовать где-либо в определенной папке», подразумевает, что вы хотите рекурсивно спускать все каталоги (папки) в пределах начального каталога (папки). Вот что find нужно сделать:
Это «находит» все файлы в текущем рабочем каталоге ( . ). Для каждого найденного файла ls запускается процесс сортировки найденных объектов по размеру. + Терминатор на -exec причинах многочисленных аргументов, передаваемых в списке ls . Если в вашем каталоге (папке) нет очень большого количества файлов, у вас должен быть один список (и, следовательно, один процесс разветвленный), что приведет к желаемому результату.
это хорошо, так как позволяет вам использовать модификатор -h в ls, чтобы показать хорошие размеры файлов
Список файлов отображается в обратном порядке: ls -lSrh
Для возрастания: ls -lSh
Я написал кое-что в этой степени некоторое время назад. Вы можете передать аргумент, чтобы указать, сколько файлов перечислить, или просто набрать big , в случае чего вы получите 10.
Попробуйте это, это прекрасно работает для меня.
$ find /home/san -type f -printf '%s %p\n'| sort -nr | head -n 10
В Windows есть ли способ получить список всех файлов в папке, включая все файлы во всех подпапках?
Список всех файлов рекурсивно
Чтобы сохранить их в файл
Просматривайте их страницу за раз
Ну, ладно . Это тоже сработает. Просто интересно, почему никто не использует стандартную функцию поиска Windows для этого. :-)
@Workshop Алекс: Потому что 1) рекурсив dir немного быстрее, если не нужно проверять какие-либо условия; 2) позволяет сохранить имена в файл.
Попробуйте дерево / ф. Это должно вывести всю структуру.
Я думал, что команда дерева будет иметь лучшее форматирование, что позволит вам четко видеть уровень вложенных папок.
Затем вы можете сделать следующее для получения списка всех файлов с путями к папкам.
Существуют и другие формы команды Unix, которые могут быть вам полезны.
Вывод более удобен для поиска по сравнению с нативом dir и tree командами.
Обновлено с входом от Johannes .
В cmd.exe оболочке
работает довольно хорошо для рекурсивного листинга в отформатированной форме Widows
(так что вы видите " C:\ " и обратные косые черты, ' \ ').
Я полностью пропустил " \b " в Nifle ответе! (+1 за это сейчас).
@ Йоханнес, на самом деле я не могу вспомнить, делал ли я это в DOS 6,22 дня. find С Cygwin я привык к тому , что никогда не пробовал команды dos (на самом деле мне потребовалось время, чтобы открыть cmd оболочку и не /usr/bin/dir попробовать эту опцию. Но она работает; рад узнать, что это :-)
Почему так сложно? Нажмите клавишу Windows + F, чтобы запустить «Поиск файлов» в Windows. Слева, перейдите к «Искать в» и выберите опцию внизу под названием «Обзор . ». Выберите (под) папку, в которой вы хотите выполнить поиск. Введите «*» (без кавычек) в поле «Все или часть имени файла» и начните поиск. Выпейте кофе, когда вы будете искать на большом диске с большим количеством данных, и просто подождите, пока поисковая система на основе проводника покажет вам полный список. Вы можете искать его, открывать файлы напрямую и даже сузить область поиска при необходимости.
Почему люди забывают это поисковое поведение по умолчанию в Windows?
Обратите внимание, что это (по крайней мере, в Win XP) будет искать все файлы ZIP во всех подпапках. Который будет ужасно медленным. Что, вероятно, не то, что вы хотите. Который не может быть легко выключен. Если нет файлов ZIP, я согласен, что это лучший подход.
@Wim: ваш 5-шаговый процесс (Win + F, Browse, Subfolder, *, Start) намного медленнее, чем просто набирать «dir / s» (для машинистки, которая печатает более 100 слов в минуту и привыкла делать что-то в командной строке, поэтому он часто предварительно открывается). Кроме того, упомянутый вами процесс изменил версии с Windows, в то время как «dir / s» был последовательным. Кроме того, ваш процесс требует нажатия Win + F, что не всегда легко. Иногда, даже если на клавиатуре есть клавиша Windows, эту клавишу может быть сложнее использовать, например, в сценариях удаленного доступа, где клавиша может использоваться локальным компьютером вместо удаленного
Я считаю этот командный файл полезным
Использование: Просто перетащите папку и поместите ее в файл DragDropListFile.bat, затем создайте файл с именем list.txt, который содержит то, что вы хотите.
Если вам не нравится перетаскивание, попробуйте этот командный файл
Использование: поместите файл ListFile.bat в папку, в которую вы хотите составить список файлов, затем запустите файл ListFile.bat, затем создайте файл с именем list.txt, который содержит то, что вы хотите.
dir /s /w >files.txt дадут вам большую часть пути туда. Это сохранит расширения. Затем откройте files.txt в текстовом редакторе и либо
В одной из наших нескольких статей о выводе файлов с помощью популярной команды ls мы рассказали, как вывести и отсортировать файлы по времени последней модификации (дате и времени) на Linux.
В этой короткой, но понятной статье мы представим ряд полезных опций команды ls, чтобы вывести список всех файлов в определенном каталоге и отсортировать их по размеру файла в Linux.
Обратите внимание, что когда ls вызывается без каких-либо аргументов, она перечисляет файлы в текущем рабочем каталоге.
В следующей команде флаг -l означает длинный список, а -a указывает ls перечислить все файлы, включая (.) или скрытые.
Чтобы не показывать. и .. файлы, используйте опцию -A вместо -a.
Кроме того, вы можете рекурсивно перечислять подкаталоги, используя опцию -R.
Добавить комментарий Отменить ответ
Эта простая однострочная программа для Powershell выведет текущее время работы вашего компьютера. Вывод показан в несколько столбцов, но может быть выведен и в одну строку. PS C:\Users\Windows 11> (get-date) - (gcim Win32_OperatingSystem).LastBootUpTime Days : 0 Hours : 0 Minutes : 41 Seconds : 27 Milliseconds : 915 Ticks : 24879150105 TotalDays : 0.0287953126215278.
Ошибка 504 gateway time-out возникает тогда, когда Nginx не может получить ответ от службы достаточно долго. Например, от PHP-FPM. Nginx и PHP-FPM Наиболее распространенной причиной этой ошибки является совместная работа Nginx и PHP-FPM. В случае очень медленных PHP-скриптов Nginx выдает тайм-аут шлюза 504, когда не ожидает ответа в течение 30 секунд (по умолчанию). Чтобы избавиться.
17 сентября 2021 года произошло событие, всколыхнувшее кинематографический мир. На платформе Netflix появился корейский сериал “Игра в кальмара”. Всего пары недель ему хватило для того, чтобы выйти на первые позиции по популярности не только на Родине, но и в Соединенных Штатах, России. Оценить сюжет сериал можно не только просмотром, но и игрой squid game challenge скачать которую.
Читайте также: