簡體   English   中英

使用 linux find 命令查找目錄和目錄的符號鏈接

[英]Using linux find command to find directories and symbolic links to directories

對於 linux 中的給定目錄樹,我想列出:

  • 所有目錄,
  • 目錄的所有符號鏈接
  • 不是通過符號鏈接找到的目錄。

考慮一個空目錄,然后執行

mkdir a
mkdir a/b
ln -s a c
echo "x" > f1
ln -s f1 f2

然后find. -type d find. -type d給出

.
./a
./a/b

所以錯過了符號鏈接./cfind. -type l find. -type l給出

./c
./f2

錯過了目錄. ./a./a/b ,此外還打印符號鏈接./f2 ,它不是指向目錄的符號鏈接,而是指向文件的符號鏈接。

使用-H選項:

使在命令行上指定的每個符號鏈接返回的文件信息和文件類型(請參閱stat(2))是該鏈接引用的文件的信息和文件類型,而不是鏈接本身。 如果引用的文件不存在,則文件信息和類型將用於鏈接本身。 不在命令行上的所有符號鏈接的文件信息都是鏈接本身的文件信息。

所以:

find -H . -type d

將列出目錄和目錄鏈接。

你可以說:

while read -r name; do
  [ -d "$name" ] && echo "$name";
done < <(find .)
find -L .... -type d ...

這將列出目錄和指向目錄的鏈接,因為 find 將跟隨符號鏈接並限定其目標以查看它是否匹配所需的約束。

-H 不會跟隨符號鏈接(默認)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM