我有一台通过网络共享用户主文件夹的服务器。每个用户都有一个缓存文件夹。有时使用符号链接将此文件夹重定向到他们正在使用的任何机器的硬盘驱动器(有时这不起作用并且他们的符号链接损坏[这是另一天的问题]。)
我试图找出哪些用户有符号链接,哪些没有。在共享文件夹中,要访问缓存文件夹,您可以像这样替换文件夹:
$GRADE/$USERNAME/图书馆/缓存
现在我正在寻找哪些用户有符号链接,哪些没有。我想出了:
cd /path/to/shared/home/folders
sudo find . -name "Caches" -exec ls -ld {} \;
并得到这样的结果:
lrwxr-xr-x@ 1 name0 ES_Students 27 Jan 18 11:05 ./CES_Grade_03/name0/Library/Caches -> /tmp/name0/Library/Caches
drwx------ 11 name1 ES_Students 374 Dec 8 15:44 ./CES_Grade_03/name1/Library/Caches
lrwxr-xr-x@ 1 name2 ES_Students 27 Feb 23 14:27 ./CES_Grade_03/name2/Library/Caches -> /tmp/name2/Library/Caches
drwx------ 17 name3 ES_Students 578 Jan 25 11:13 ./CES_Grade_03/name3/Library/Caches
drwx------ 12 name4 ES_Students 408 Mar 22 13:09 ./CES_Grade_03/name4/Library/Caches
但它一直困扰着我,必须有更好的方法。是的,它已经足够好了,而且是一次性的任务,但我想知道如何正确地完成它!当然,我应该能够执行以下操作:
cd /path/to/shared/home/folders
sudo ls -ld **/**/Library/Caches
恐怕我不知道正确的语法,或者 bash 中是否存在递归文件夹替换通配符格式,而我的 google-fu 让我失望了。
那么,我该如何正确地制定搜索呢?
**
如果你有 Bash 4shopt -s globstar
要查找文件符号链接的文件(而不是目录):
要查找损坏的符号链接:
丹尼斯当然让我走上了正轨。这是我最终使用的:
它只搜索深度为 3 个目录的深度,寻找 Library 文件夹(每个用户都有)。然后它会列出该文件夹中缓存的条目,给我:
我试过了:
它真的很接近我想要的。它没有任何颜色,并且不会告诉我缓存文件夹是否完全丢失。
我也非常喜欢搜索损坏的符号链接,如下所示:
我想这个故事的寓意是我应该花更多时间浏览
find
手册页。