Ls

如何防止ls對輸出進行排序?

  • September 4, 2018

我有一個特定的文件順序,如果它們存在,我想列出它們;大約 40 個文件。某種優先級。所以我嘗試了:

ls -1d         /opt/foo/lib.jar /opt/bar/lib.jar

/opt/foo/lib.jar如果兩者都存在,我希望首先列出。但實際上它會列印第bar一個和foo之後的內容。

有沒有辦法ls按照參數中給出的順序列出條目?

或者一些替代方法find

提到後find,我發現它可以採用多於 1 條路徑作為路徑參數。所以很簡單:

find /opt/foo/lib.jar /opt/bar/lib.jar -prune 2> /dev/null

使用 GNU ls,您可以嘗試以下-U選項:

-U: 不排序;按目錄順序列出條目

(雖然在這裡,我們沒有列出目錄的內容,所以重要的部分是不排序)。

$ ls -1dU /opt/foo/lib.jar /opt/bar/lib.jar
/opt/foo/lib.jar
/opt/bar/lib.jar

更便攜(適用於 GNU 和 FreeBSD ls,但不適用於傳統ls實現,也不是 POSIX),您可以使用ls -1df

$ ls -1df /opt/foo/lib.jar /opt/bar/lib.jar
/opt/foo/lib.jar
/opt/bar/lib.jar

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