![]() |
1
2
|
![]() |
2
5
上面写着 perlrun
所以我们不能这样做
这是另一种使用Perl的方法(如标签所示——尽管有一个使用Perl的干净解决方案)
ln_a.txt ln_b.txt c.txt # file "input_list.txt"
文件/链接名的位置
然后,在每个输入文件的第一行打开一个临时输出文件,并将每个处理过的行写入其中。一旦到达输入文件的末尾,将该临时输出重命名为其输入文件,或者重命名为其目标(如果是链接)。因此,对于每个输入文件,用输出文件覆盖文件或其目标(如果链接)。
这将更改目标的内容,并保留链接。它也适用于常规文件。
这个
rename
eof
as used检查每个输入文件的文件是否已用尽,此时输出文件将重命名为输入文件或其目标。这个
明确的
|
![]() |
3
2
另一个Perl选项:
或者不使用xargs,只需从STDIN读取文件名:
作为奖励,
注意:Path::Tiny将根据当前umask设置它编辑的所有文件的权限,而不是现有权限;我打开了 an issue |
![]() |
4
2
你只需要
您还可以在Perl中扩展链接。
|
![]() |
5
1
我最初的解决方案是让符号链接受到重击,然后运行:
如果符号链接碰巧是偶然的并且与搜索无关,那么这些工具可能会破坏它们。 这里的链接有一些有趣的想法: https://unix.stackexchange.com/questions/9318/is-there-a-way-to-make-perl-i-not-clobber-symlinks
拉斐尔的答案(使用sed)可能是……解决这个问题的最明智的方法:) |
|
Batavia · Bash-删除大目录中的文件 1 年前 |
![]() |
stackbiz · 如何在bash中将所有换行符替换为“\n” 1 年前 |
![]() |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |