Answers:
请参阅“条件表达式”,man bash
在这种情况下,您需要-h
:
for file in *
do
if [ -h "$file" ]; then
echo "$file"
fi
done
test -h
是我想要的!
您可能并不需要脚本。要仅在当前文件夹中显示任何符号链接,而无需递归到任何子文件夹中:
找 。-maxdepth 1 -l型-print
或者,要获取更多信息,请使用以下方法之一:
找 。-maxdepth 1 -type l -exec ls -ld {} + 找 。-maxdepth 1 -type l -print0 | xargs -0 ls -ld
要知道,如果一个文件是一个符号链接,可以使用readlink
,这将输出什么,如果它不是一个符号链接。以下示例不是很有用,但是显示了如何readlink
忽略普通文件和文件夹。使用以下之一:
找 。-maxdepth 1 -exec readlink {} + 找 。-maxdepth 1 -print0 | xargs -0读链接
请注意,上述-exec ... +
和xargs ...
比快得多-exec ... \;
。喜欢:
时间查找/ usr / bin -maxdepth 1 -type l -exec ls -ld {} \; 真正的0m0.372s 用户0m0.087s sys 0m0.163s 时间查找/ usr / bin -maxdepth 1 -type l -exec ls -ld {} + 真实的0m0.013s 用户0m0.004s sys 0分0.008秒 时间查找/ usr / bin -maxdepth 1 -type l -print0 | xargs -0 ls -ld 真正的0m0.012s 用户0m0.004s sys 0分0.009秒