我有两个目录:/all/origins/
& /all/links/
。
in 中的所有内容都links/
单独指向 in 中的某些内容origins/
,但并非 in 中的所有内容origins/
都相互关联links/
。 (正方形、矩形和分类层次结构,明白了吗?)这些是符号链接 ( ln -s
),而不是硬链接。
1. 中的所有内容links/
都需要删除,以及 2. 中的符号链接目标origins/
(不知道它们是否在 中origins/
)和 3.links/
目录本身。
什么rm
Unix命令我应该输入以删除整个links/
目录和符号链接到的任何符号链接目的地origins/
吗?
我正在寻找类似的东西:rm -R /all/links
或rm -r --follow-all-ln /all/links
。
如果rm
带参数的命令无法完成这项工作,请明确说明,因为这是我的偏好并且隐含在标题中(Unix 和 Linux 可以通过rm
不循环来完成此操作do
吗? -仅有的如果这不起作用,请说明并解释什么do
循环。)
答案1
首先备份您的数据,以防出现问题。
我的理解是,您要删除目录的所有内容/all/links/
以及该目录内的链接所指向的文件。
无法像您所希望的那样使用简单的 Unix 命令来执行此操作,但可以使用简单的脚本来执行此操作。
#!/bin/bash
for i in /all/links/*
do
rm "$(readlink -f $i)"
rm "$i"
done
rmdir /all/links
正如您所说,里面的所有文件/all/links/
都是符号链接,因此不需要检查每个值i
是否是链接。