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 次 |
| 最近记录: |