假設我有一個目錄/dir
其內部有3個符號連接其他目錄 /dir/dir11
,/dir/dir12
和/dir/dir13
。我想列出dir
中的所有文件,包括dir11
,dir12
和dir13
中的文件。LINUX遞歸列出目錄中的所有文件,包括在符號鏈接目錄中的文件
更通用的,我想列出包括在其中的符號鏈接的目錄中的那些所有文件。 find .
,ls -R
等停止在符號鏈接而不導航到他們進一步列出。
假設我有一個目錄/dir
其內部有3個符號連接其他目錄 /dir/dir11
,/dir/dir12
和/dir/dir13
。我想列出dir
中的所有文件,包括dir11
,dir12
和dir13
中的文件。LINUX遞歸列出目錄中的所有文件,包括在符號鏈接目錄中的文件
更通用的,我想列出包括在其中的符號鏈接的目錄中的那些所有文件。 find .
,ls -R
等停止在符號鏈接而不導航到他們進一步列出。
的-L
選項ls
將完成你想要的。它取消了符號鏈接。
所以,你的命令是:
ls -LR
您還可以
find -follow
的-follow
選項指示找到跟隨符號鏈接目錄的做到這一點。
在Mac OS X上使用
find -L
爲-follow
已被棄用。
-follow在新版本的find中不推薦使用-L。 – pjz 2008-09-19 20:41:19
@pjz:是否有'以下不贊成的交叉引用;使用-L'?有些令我驚訝的是,我確實在http://www.opengroup.org/onlinepubs/009695399/toc.htm找到了'-L'和'-H'的POSIX/SUS標準,更讓我驚訝的是沒有' - 關注',所以我回答了我自己的問題。 – 2008-10-12 23:23:14
這不適合我。首先什麼也沒有發生,然後我試着用'-follow' - 它說它找不到文件夾'ollow' – 2015-04-21 08:04:55
使用ls命令:
ls -LR
從 '人LS':
-L, --dereference
when showing file information for a symbolic link, show informa‐
tion for the file the link references rather than for the link
itself
或者使用find:
find -L .
從查找手冊頁:
-L Follow symbolic links.
如果你找到你想要的只是遵循幾個符號鏈接(如也許只是你提到的那些頂層),你應該看看-H選項,其中只有遵循您傳遞給它的命令行符號鏈接。
find /dir -type f -follow -print
-type f
意味着它會顯示實時文件(不是符號連接)
-follow
意味着它會跟着你的目錄符號鏈接
-print
將導致它來顯示文件名。
如果你想有一個LS型顯示器,你可以做以下
find /dir -type f -follow -print|xargs ls -l
ls -R -L
-L
解引用符號鏈接。這也將使得看不到文件的任何符號鏈接 - 它們看起來像指向文件。
如何tree? tree -l
將遵循符號鏈接。
免責聲明:我寫了這個包。的 文件到
find -L /var/www/ -type l
# man find
-L Follow symbolic links. When find examines or prints information about files, the information used shall be taken from the
性質的鏈接點,而不是鏈接本身(除非它是一個破碎的符號鏈接或發現無法 檢查文件 該鏈接點)。使用此選項意味着-noleaf。如果以後使用-P選項,-noleaf仍然有效。如果-L爲 ,並且find在其搜索過程中發現了到子目錄的符號鏈接,則將搜索 符號鏈接所指向的子目錄 。
我知道tree
是合適的,但我沒有安裝樹。所以,我有一個非常密切的替代here
find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
的可能的複製[如何只使用Linux獲取文件名\`找到\`?](http://stackoverflow.com/questions/5456120/how-to -only-get-file-name-with-linux-find) – 2016-11-25 11:15:04