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秒