[英]Using find to delete symbolic links except those which point to directories
[英]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
所以錯過了符號鏈接./c
, find. -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.