如何列出其他(非目前)目錄中的檔案?

如何列出其他(非目前)目錄中的檔案?

如果 ls 列出目前目錄的內容,是否有類似的指令可以列出非目前目錄的內容,而不使用 cd?

答案1

只需ls輸入要列出的目錄的路徑即可獲得它。想像一下您在主目錄中但想要列出/etc.只需運行ls /etc,您就會將其列出。

答案2

ls會這樣做。

的語法ls是:

 ls flags file-or-directory-names

為了我所呼喚的file-or-directory-names,您可以列出目前目錄中的文件,以僅列出某些文件。例如,ls -l foo bar將列出有關foo和 的資訊bar(以長形式,正如我給出的-l標誌)。將列出名稱以(如果有)ls baz*go開頭baz和結尾的所有檔案。go

但是當你給一個目錄名ls,它列出了內容那個目錄而不是當前目錄。

因此,要列出 的內容/var/log,您只需運行:

ls /var/log

如果你給一個相對的目錄的路徑(即不以 a 開頭的路徑),/那麼它將在當前目錄中尋找該目錄(就像查找檔案一樣)。但它仍然會列出內容目錄,如你所願。

作為旁注,有時您可能會發現您不想列出內容目錄,但只需列出與列出檔案相同的目錄。為此,您可以傳遞-d標誌。例如,這/var/log以長形式顯示(不是它的內容,但/var/log它本身):

ls -ld /var/log

答案3

看到已接受的答案後,我仍然不滿意。丹尼爾是怎麼知道解決方案的?你敢打賭我自己已經閱讀了線上幫助頁,但仍然不知道如何進行。

的手冊頁內容ls如下:

描述:列出有關文件的資訊(預設為當前目錄)...

那裡沒有什麼有用的。然後我查了POSIX程式設計師手冊:

對於命名目錄類型檔案的每個操作數,ls 應寫入目錄中包含的檔案的名稱以及任何要求的關聯資訊。

此行解釋了可接受的解決方案中命令的行為。 CANFILE的操作數是ls一個目錄,並且ls會列出該目錄的內容。正是OP想要的。但 Linux 上的實作可能與此處的規格不同。所以我們走在正確的軌道上,但還沒有實現。

然後我搜尋了GNU包的手冊coreutils,這ls是.這是我發現的:

對於目錄的非選項命令列參數,預設情況下 ls 列出目錄的內容...

這就解釋了。

相關內容