Bash

linux中ls命令的替代方法是什麼?

  • August 11, 2015

如何在不使用 ls 命令的情況下列出目前目錄或任何目錄路徑內容?我們可以使用 echo 命令嗎?

printf '%s\n' *

作為一個 shell 命令將列出目前目錄中的非隱藏文件,每行一個。如果沒有非隱藏文件,它將*單獨顯示,除非在那些已修復該問題的 shell(csh、tcsh、fish、zsh、bash -O failglob)中。

echo *

將列出由空格字元分隔的非隱藏文件,除非(取決於 shell/echo 實現)當第一個文件名以反斜杠字元開頭-或文件名包含反斜杠字元時。

需要注意的是,*在將其傳遞給命令之前,shell 會將其擴展為文件列表。您可以在這裡使用任何命令,例如head -- *顯示前幾行(使用那些head接受多個文件的實現),stat -- *

我要包含隱藏文件:

printf '%s\n' .* *

(取決於外殼,這也將包括.and ..)。與zsh

printf '%s\n' *(D)

在可以列出目錄內容的其他應用程序(除了 shell glob 和ls)中,還有find

find . ! -name . -prune

.(包括除和之外的隱藏文件..)。

在 Linux 上,lsattr(列出 Linux 擴展文件屬性):

lsattr
lsattr -a # to include hidden files like with ls

引用自:https://unix.stackexchange.com/questions/222492