Att*_* O. 29 bash symbolic-link find
我想递归地将软链接转换为目录中的硬链接。我试过这样的事情:
for f in *; do (mv $f{,~} && ln $(readlink $f~) && rm $f~) done
Run Code Online (Sandbox Code Playgroud)
……但它有两个主要问题:
以某种方式将上述行提供给 会很好find -type l
,但我不知道该怎么做。
Den*_*nis 42
此命令应该有效:
find -type l -exec bash -c 'ln -f "$(readlink -m "$0")" "$0"' {} \;
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
find -type l
查找当前目录中的所有链接。
-exec bash -c '...' {} \;
调用 bash 来执行...
.
它传递{}
- 当前正在处理的链接的名称 - 作为参数,bash 可以作为$0
.
readlink -m "$0"
返回符号链接目的地的绝对路径。
ln -f "$(readlink -m "$0")" "$0"
用指向其目标的硬链接覆盖 ( -f
) 符号链接$0
。
如果由于某种原因无法转换链接,它将保持不变,ln 将打印一条错误消息。
归档时间: |
|
查看次数: |
9660 次 |
最近记录: |