【发布时间】:2012-05-04 16:35:50
【问题描述】:
我有一项任务要求我删除目录中未符号链接的所有文件夹,只保留符号链接的文件夹和符号链接。
如果我有 3 个资源:链接、链接文件夹和未链接文件夹。链接和linked_folder将被保留。
目前我已经设法得到这个代码,它适用于我们拥有的文件命名结构,但我想知道是否有更清洁的解决方案?
protected_folders=`ls -l | awk '/^l/ {printf $10}' | tr '/' '|'`;
symlinks=`ls -l | awk '/^l/ {print $8}' | tr "\n" "|"`;
protected_resources=$protected_folders$symlinks;
protected_resources=${protected_resources:0:${#protected_resources}-1};
folders_to_delete=`ls | grep -v -E "$protected_resources"`;
echo $folders_to_delete | tr '\n' ' ' | tr ' ' '\000' | xargs -0 rm -rf
我知道上面的命令可以在一行中完成,但我已经将它分开了,因为我被要求让它更“可读”。
任何帮助将不胜感激。
【问题讨论】: