ฉันสามารถตรวจสอบได้ว่ามีไฟล์อยู่หรือไม่และเป็นลิงก์สัญลักษณ์ที่มี -L
for file in *; do
if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi
done
และถ้ามันเป็นไดเรกทอรีที่มี -d:
for file in *; do
if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; fi
done
แต่ฉันจะทดสอบเฉพาะลิงก์ไปยังไดเรกทอรีได้อย่างไร
ฉันจำลองทุกกรณีในโฟลเดอร์ทดสอบ:
/tmp/test# ls
a b c/ d@ e@ f@
/tmp/test# file *
a: ASCII text
b: ASCII text
c: directory
d: symbolic link to `c'
e: symbolic link to `a'
f: broken symbolic link to `nofile'
shopt -s dotglob