linux - 在 linux 中删除包含符号链接(symbolic link)的目录

标签 linux shell

<分区>

我想删除 linux 中的一个非空目录,该目录内部有一个带有一堆符号链接(symbolic link)的目录结构。当我运行时

rm -rf /direcory

它不仅会删除所有符号链接(symbolic link)和目录,还会删除这些符号链接(symbolic link)指向的所有目录。是否有仅包含符号链接(symbolic link)的目录的命令?

最佳答案

反例:

$ mkdir directory
$ cd directory
$ mkdir to-be-removed to-be-left-behind
$ cd to-be-left-behind
$ mkdir a b c
$ cd ../to-be-removed
$ ln -s ../to-be-left-behind/* .
$ cd ..
$ ls -lR
total 0
drwxr-xr-x  5 jleffler  staff  170 Dec 17 17:25 to-be-left-behind
drwxr-xr-x  5 jleffler  staff  170 Dec 17 17:25 to-be-removed

./to-be-left-behind:
total 0
drwxr-xr-x  2 jleffler  staff  68 Dec 17 17:25 a
drwxr-xr-x  2 jleffler  staff  68 Dec 17 17:25 b
drwxr-xr-x  2 jleffler  staff  68 Dec 17 17:25 c

./to-be-left-behind/a:

./to-be-left-behind/b:

./to-be-left-behind/c:

./to-be-removed:
total 24
lrwxr-xr-x  1 jleffler  staff  22 Dec 17 17:25 a -> ../to-be-left-behind/a
lrwxr-xr-x  1 jleffler  staff  22 Dec 17 17:25 b -> ../to-be-left-behind/b
lrwxr-xr-x  1 jleffler  staff  22 Dec 17 17:25 c -> ../to-be-left-behind/c
$ rm -fr to-be-removed
$ ls -lR
total 0
drwxr-xr-x  5 jleffler  staff  170 Dec 17 17:25 to-be-left-behind

./to-be-left-behind:
total 0
drwxr-xr-x  2 jleffler  staff  68 Dec 17 17:25 a
drwxr-xr-x  2 jleffler  staff  68 Dec 17 17:25 b
drwxr-xr-x  2 jleffler  staff  68 Dec 17 17:25 c

./to-be-left-behind/a:

./to-be-left-behind/b:

./to-be-left-behind/c:
$

符号链接(symbolic link)被删除,但它们指向的目录没有被删除。

因此,您的示例中还有其他因素在起作用。例如,如果符号链接(symbolic link)指向 to-be-removed 下的文件或目录,那么符号链接(symbolic link)和目标都将被删除,但这只是因为目标无论如何都在火线上。

关于linux - 在 linux 中删除包含符号链接(symbolic link)的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924923/

相关文章:

python - 使用 Crontab 自动化 Python 脚本

linux - 如何每隔一小时杀死一次日志运行作业?

json - 如何从 linux shell 脚本中的 json 键值对获取值

linux - 由于对gcry- *符号的许多 undefined reference ,因此无法链接git2-rs

c - 使用 read() 获取用户输入而不是 scanf

linux - 输入新的 bash 实例时 .bashrc 是否运行两次?

linux - 保存输入的命令供以后使用

linux - 使用 sudo 执行 2 个(类似的)命令,给出相同的精确输出

linux - 在 Ubuntu 中从 smb.conf 文件中删除分号的命令

linux - 无法终止 Linux 进程