2011-04-07 201 views
49

時,我經常使用的Unix這個list命令(AIX/KSH):Unix的ls命令:顯示完整路徑使用選項

ls -Artl

它顯示的文件,這樣的:

-rw-r--r-- 1 myuser mygroup 0 Apr 2 11:59 test1.txt
-rw-r--r-- 1 myuser mygroup 0 Apr 2 11:59 test2.txt

我想修改命令,以便顯示文件的完整路徑。例如:

-rw-r--r-- 1 myuser mygroup 0 Apr 2 11:59 /usr/test1.txt
-rw-r--r-- 1 myuser mygroup 0 Apr 2 11:59 /usr/test2.txt

任何想法?

我發現了幾種使用pwdfind的解決方法,但是 - 據我所知 - 如果我想保留ls選項,這不起作用。

回答

52

什麼這一招...

ls -lrt -d -1 $PWD/{*,.*} 

OR 

ls -lrt -d -1 $PWD/* 

我認爲這與空目錄問題,但如果其他的海報有一個調整,我會更新我的答案。此外,您可能已經知道這一點,但鑑於它的冗長,這可能是一個很好的候選人。

[更新]根據評論添加了一些調整,謝謝你們。

[更新]正如您可能需要根據shell(bash vs zsh)來嘮叨matcher表達式所指出的那樣。我重新添加了舊命令以供參考。

+0

你更新後的命令不爲我工作了。消息'不能訪問/ mydir/mysubdir/{* ,.*}:沒有這樣的文件或目錄' – TechnoCore 2011-04-07 12:53:36

+0

'。*'似乎與bash中的'.'和'..'匹配,但不匹配zsh。 ('ls -A'不會顯示它們,所以我之前的建議只能在zsh上完全運行,甚至可能我的.zshrc與它有關) – dancek 2011-04-07 12:55:38

+0

還有一件事:'ls -lrt -d -1 $ PWD /{*,.[^.]*}'不會在sh中顯示'.'和'..',但在zsh中顯示兩個點文件。有'$ PWD/*'似乎就足夠了。 – bmk 2011-04-07 13:07:22

13

使用此命令:

ls -ltr /mig/mthome/09/log/* 

代替:

ls -ltr /mig/mthome/09/log 

獲得上市的完整路徑。

+5

如果您的目錄中有很多文件,則無法正常工作 – 2012-06-17 12:56:02

+0

在此處正常工作 – 2012-10-03 20:36:31

+1

我喜歡此解決方案,因爲它的簡單性和易用性更好。我想如果你創建了一個別名,另一個解決方案可能是可用的,但實際上,沒有人會打擾所有輸入。 – jsarma 2013-07-13 18:15:40

41

試試這個,對我的作品:ls -d /a/b/c/*

+0

或者只是使用$ PWD – Gerard 2014-05-12 17:56:50

+0

但是不顯示完整路徑**,請在任何地方嘗試'ls -d。| more',只顯示'.'。 – 2018-01-12 11:22:42

5

我使用這個命令:

ls -1 | xargs readlink -f 
+0

根據您的文件名可能需要執行'ls -Q1 | xargs readlink -f'但是這對我很好。 – mlibby 2014-08-02 15:52:00

+1

這是一個很好的解決方案,但是與簡單的'readlink -f'有什麼不同? – user2141046 2015-09-06 13:19:09

+1

您必須在您的機器上將xargs別名爲'xargs -L 1'。否則這不適用於多個文件。在這種情況下,命令是'\ ls -1 | xargs -L 1 readlink -f' – user2141046 2015-10-06 09:36:06

-1

您可以將find命令和ls命令。使用路徑(。)和選擇器(*)來縮小您之後的文件。在後面的引號中圍繞find命令。如果你看不懂它,那麼-name的參數就是doublequote star doublequote。

ls -lart `find . -type f -name "*" ` 
3

從spacedrop答案優化...

ls `pwd`/* 

,您可以用ls選項