Как получить список всех папок и файлов в Linux?
В Unix OS (Linux) получить список файлов и папок можно несколькими способами. Я распишу лишь один из них — самый распространенный, а также некоторые метод помощники, который помогут вам в работе в файлами.
Внимание! «$» будет обозначать начало консольной команды, вводить в консоль его не нужно.
Самый распространенный способ — это использовать ls :
В ответ вы должны получить что-то подобное на это:
$ ls idea-IC-171.4424.56 PhpStorm-171.4694.2
В одну строчку список всех файлов в директории, где вы находитесь. Не удобно, не правда ли? Давайте сделаем вывод столбцом.
Вывод файлов и папок столбцом
Где -a обозначает показывать все файлы, даже . и .. . . — означает текущая директория, .. на одну директорию назад, а -l означает использование длинного синтаксиса вывода списка файлов и папок.
Чтобы не писать параметры в формате как «ls -a -l» вы можете группировать их (писать друг за другом), как показано на примере выше.
Пример вывод команды выше будет следующий:
$ ls -al total 16 drwxr-xr-x 4 ateshaev ateshaev 4096 Jun 1 14:52 . drwxr-xr-x 42 ateshaev ateshaev 4096 Jun 30 08:56 .. drwxr-xr-x 8 ateshaev ateshaev 4096 Jun 1 14:45 idea-IC-171.4424.56 drwxr-xr-x 8 ateshaev ateshaev 4096 Jun 1 14:52 PhpStorm-171.4694.2
В данном случае, ничего интересного, потому что выводятся две папки и ls не показывает для них размер файла и некоторые другие данные. Ниже будет представлен пример с файлами.
Сортировать папки и файлы по размеру
- ‘none’ - ‘time’ - ‘size’ - ‘extension’ - ‘version’
Расшифровка:
- По пустому значению, что в принципе логично
- По времени
- По размеру
- По расширению, например показать только php файлы
- Или по версии файла
Пример сортировки по размеру файлов и папок:
В этой случае логичнее распределить параметры с помощью тире(«-«), потому что написанное становится читабельнее.
В ответ вы должны получить что-то на подобии этого:
$ ls -a -l -S --sort=size total 256 -rwxr-xr-x 1 ateshaev ateshaev 123916 Jul 2 11:48 composer.lock -rwxrwxrwx 1 ateshaev ateshaev 8853 Feb 1 18:00 init -rwxrwxrwx 1 ateshaev ateshaev 5051 Jun 9 15:07 requirements.php drwxrwxr-x 13 ateshaev ateshaev 4096 Jul 2 15:25 . drwxr-xr-x 6 root root 4096 Jun 23 15:29 .. drwxrwxrwx 13 ateshaev ateshaev 4096 Jun 22 17:51 backend drwxrwxr-x 10 ateshaev ateshaev 4096 Jun 21 10:41 common drwxrwxr-x 7 ateshaev ateshaev 4096 Jun 5 14:56 console drwxrwxr-x 4 ateshaev ateshaev 4096 Jun 9 15:07 environments drwxrwxr-x 11 ateshaev ateshaev 4096 Jun 22 17:51 frontend
Как видно, в четвертой колонке, такие числа как 123916 (третья строка) — обозначают размер файла и не очень читаются. Давайте сделаем читабельный вид, добавив -h параметр, который означает «человеческий вид размера файла».
В итоге у вас должно получиться что-то похожее на это:
$ ls -a -l -h -S --sort=size total 256K -rwxr-xr-x 1 ateshaev ateshaev 122K Jul 2 11:48 composer.lock -rwxrwxrwx 1 ateshaev ateshaev 8,7K Feb 1 18:00 init -rwxrwxrwx 1 ateshaev ateshaev 5,0K Jun 9 15:07 requirements.php .
Сразу стало намного лучше 🙂
Быстрый способ написано ls
Мне часто было лень писать:
И в дальнейшем я нашел альтернативный способ:
В формате «ll» вы также можете прописывать -h, -S —sort=size и т.д. — это лишь укороченный формат
Еще много чего можно сделать с помощью ls
Все что можно сделать с помощью этой команды, я не смогу вместить в этот пост, думаю, что это самое основное, что может вам понадобиться.
Остальные команды вы можете посмотреть командой ls —help .
Вот список всех доступных команд:
Да-да, они на английском, поэтому учите английский или переводите определенную команду и пробуйте сами как это работает, потому что без практики мало что получиться.
-a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. --author with -l, print the author of each file -b, --escape print C-style escapes for nongraphic characters --block-size=SIZE scale sizes by SIZE before printing them. E.g., '--block-size=M' prints sizes in units of 1,048,576 bytes. See SIZE format below. -B, --ignore-backups do not list implied entries ending with ~ -c with -lt: sort by, and show, ctime (time of last modification of file status information) with -l: show ctime and sort by name otherwise: sort by ctime, newest first -C list entries by columns --color[=WHEN] colorize the output. WHEN defaults to 'always' or can be 'never' or 'auto'. More info below -d, --directory list directory entries instead of contents, and do not dereference symbolic links -D, --dired generate output designed for Emacs' dired mode -f do not sort, enable -aU, disable -ls --color -F, --classify append indicator (one of */=>@|) to entries --file-type likewise, except do not append '*' --format=WORD across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C --full-time like -l --time-style=full-iso -g like -l, but do not list owner --group-directories-first group directories before files. augment with a --sort option, but any use of --sort=none (-U) disables grouping -G, --no-group in a long listing, don't print group names -h, --human-readable with -l, print sizes in human readable format (e.g., 1K 234M 2G) --si likewise, but use powers of 1000 not 1024 -H, --dereference-command-line follow symbolic links listed on the command line --dereference-command-line-symlink-to-dir follow each command line symbolic link that points to a directory --hide=PATTERN do not list implied entries matching shell PATTERN (overridden by -a or -A) --indicator-style=WORD append indicator with style WORD to entry names: none (default), slash (-p), file-type (--file-type), classify (-F) -i, --inode print the index number of each file -I, --ignore=PATTERN do not list implied entries matching shell PATTERN -k, --kibibytes use 1024-byte blocks -l use a long listing format -L, --dereference when showing file information for a symbolic link, show information for the file the link references rather than for the link itself -m fill width with a comma separated list of entries -n, --numeric-uid-gid like -l, but list numeric user and group IDs -N, --literal print raw entry names (don't treat e.g. control characters specially) -o like -l, but do not list group information -p, --indicator-style=slash append / indicator to directories -q, --hide-control-chars print ? instead of non graphic characters --show-control-chars show non graphic characters as-is (default unless program is 'ls' and output is a terminal) -Q, --quote-name enclose entry names in double quotes --quoting-style=WORD use quoting style WORD for entry names: literal, locale, shell, shell-always, c, escape -r, --reverse reverse order while sorting -R, --recursive list subdirectories recursively -s, --size print the allocated size of each file, in blocks -S sort by file size --sort=WORD sort by WORD instead of name: none -U, extension -X, size -S, time -t, version -v --time=WORD with -l, show time as WORD instead of modification time: atime -u, access -u, use -u, ctime -c, or status -c; use specified time as sort key if --sort=time --time-style=STYLE with -l, show times using style STYLE: full-iso, long-iso, iso, locale, +FORMAT. FORMAT is interpreted like 'date'; if FORMAT is FORMAT1FORMAT2, FORMAT1 applies to non-recent files and FORMAT2 to recent files; if STYLE is prefixed with 'posix-', STYLE takes effect only outside the POSIX locale -t sort by modification time, newest first -T, --tabsize=COLS assume tab stops at each COLS instead of 8 -u with -lt: sort by, and show, access time with -l: show access time and sort by name otherwise: sort by access time -U do not sort; list entries in directory order -v natural sort of (version) numbers within text -w, --width=COLS assume screen width instead of current value -x list entries by lines instead of by columns -X sort alphabetically by entry extension -Z, --context print any SELinux security context of each file -1 list one file per line --help display this help and exit --version output version information and exit
Для того, чтобы вы полностью вникли во все команды, нужно некоторые моменты объяснить вам.
Когда, например, вы видите следующий формат:
-S sort by file size --sort=WORD sort by WORD instead of name: none -U, extension -X, size -S, time -t, version -v --time=WORD with -l, show time as WORD instead of modification time: atime -u, access -u, use -u, ctime -c, or status -c; use specified time as sort key
Это означает, что сначала нужно указать -S , а за ним —sort или —time , то есть в итоге у вас получится -S —sort или -S —time .