基于如何防止 sed -i 破坏符号链接?,但我使用 Perl。
我尝试了所有这些问题的中间:
这是不成功的。这是一个小而简单的示例:
#!/bin/perl
use strict; use warnings;
while (<>)
{
## For all lines, replace all occurrences of #5c616c with another colour
s/#5c616c/#8bbac9/g $(readlink -e -- "<>")
## $(readlink -e -- "<>") is similar to --in-place --follow-symlinks
## Print the line
print;
}
该
readlink -e
命令不可移植,因此不应依赖。在 Perl 代码中,使用Perl 的
readlink
函数将链接替换为它指向的文件名,然后像往常一样循环输入。alink
仍然是符号链接,内容input
已修改:在 Perl 脚本中,这可能看起来像
如果输入包含重复的文件名,则可能需要
List::Util::uniq
或类似的方法来避免两次或多次修改相同的文件名。