Вопрос или проблема
Мне нужен длинный (вертикальный) список всех имен файлов всех файлов в директории.
Как получить только имена файлов из списка ls -la
(ll
)?
Только имена, не:
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename1
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename2
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename3
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename4
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename5
Скорее, мне нужно только:
filename1
filename2
filename3
filename4
filename5
Печать только имен файлов является поведением по умолчанию для ls
. Когда вы добавляете -l
, вы говорите, что хотите вывод в “долгом формате”. Если вы просто уберете -l
, я думаю, это даст вам то, что вы хотите. Вы можете оставить -a
, чтобы включить “скрытые” файлы.
Также, как упомянул Стефан, вы можете добавить -1
, если хотите, чтобы каждый файл был на отдельной строке, что произойдет с -1
или без него, когда вывод будет перенаправлен в файл или передан другой команде.
Если вы хотите сохранить это в файл, вы можете использовать операторы >
или >>
, как с любой командой. См. Перенаправления и Что такое управляющие и перенаправляющие операторы оболочки?
Передача вывода ls в cat, похоже, работает в моей оболочке bash (Konsole). Вот вывод с моей системы.
$ ls | cat
bin
boot
cdrom
dev
etc
home
initrd.img
initrd.img.old
lib
lib32
lib64
libx32
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
tmp
usr
var
vmlinuz
vmlinuz.old
$
Команда ls -1
сохраняет цветной текст в выводе, тогда как команда на основе cat теряет цвета.
Вы можете перенаправить вывод напрямую в файл, используя >
или >>
.
Например, ls -l > somefile.txt
создаст файл с именем somefile.txt
, содержащий результаты ls -l
. Однако будьте осторожны, так как один >
перезапишет все в файле, в который вы перенаправляете. Использование >>
добавит вывод в файл, в который вы решите записать.
ls >> somefile.txt
вероятно, это команда, которую вы ищете. Для всех файлов, ls -a >> somefile.txt
. В очень маловероятном случае, когда ваш ls
не печатает результаты в одном столбце при перенаправлении вывода, вы можете явно сказать ему сделать это, используя -1
: ls -1 >> somefile.txt
.
Ответ или решение
Чтобы получить только имена файлов из вывода команды ls -la
(или её сокращённой версии ll
), важно понимать, что эта команда по умолчанию выводит название файлов вместе с детальной информацией о них, такой как права доступа, владелец, группа, размер и дата модификации. Если ваша цель — получить только имена файлов в длинном вертикальном списке, существует несколько простых способов для достижения этого.
Основные способы получения имён файлов
-
Использование
ls
без дополнительных параметров:
Командаls
по умолчанию выводит только имена файлов и папок в текущей директории. Если вы хотите включить скрытые файлы (файлы, имена которых начинаются с точки), добавьте параметр-a
. В этом случае команда будет выглядеть так:ls -a
Это выведет список всех файлов и папок, включая скрытые, но без дополнительной информации.
-
Форматирование с помощью параметра
-1
:
Если вам нужно, чтобы каждый файл отображался на отдельной строке, вы можете использовать параметр-1
(цифра один), например:ls -1
Для отображения скрытых файлов с использованием подобного формата:
ls -1a
Сохранение вывода в файл
Если вы хотите сохранить результаты в файл, вы можете использовать операторы перенаправления >
или >>
. Обратите внимание, что >
затирает содержимое файла, в то время как >>
добавляет вывод в конец файла. Примеры команд:
-
Для создания нового файла с выводом:
ls -1 > output.txt
-
Чтобы добавить вывод в уже существующий файл:
ls -1 >> output.txt
Использование ls -la
с дополнительной обработкой
Если вам действительно необходимо использовать команду ls -la
, но отфильтровать только имена файлов, можно воспользоваться комбинацией grep
и awk
или cut
. Например:
ls -la | awk '{print $9}'
Либо с использованием cut
:
ls -la | cut -d ' ' -f 9
Эти команды будут извлекать только девятый столбец из вывода ls -la
, который соответствует имени файла.
Заключение
Таким образом, существует несколько методов получения имён файлов из команды ls
. Наиболее простыми и эффективными являются использование ls
с параметрами -a
и -1
для получения нужного вида списка. При этом, если необходимо, можно легко перенаправить вывод в файл. Убедитесь, что вы используете правильные операторы перенаправления, чтобы избежать потери данных. Если же требуется использовать ls -la
, можно воспользоваться дополнительными утилитами для обработки вывода.