【问题标题】:Unix Command readlink, xargs,sed,cutUnix 命令 readlink, xargs,sed,cut
【发布时间】:2013-09-19 04:15:38
【问题描述】:

我在某处读过这个命令..不知道它是什么。

find . -maxdepth 1 -type f -follow | cut -d/ -f2 | xargs -I % readlink -f  % | cut -d\/ -f7,14 | sed 's/\// /g' | sort

我搜索了它,得到了 maxdepth 和 type 的含义,但不是关于 -followcut -f -f2readlinksed

-f7,14 是什么意思?

【问题讨论】:

  • man cut 会告诉你。祝你好运。
  • BUt xargs -I % readlink -f % 是什么意思?
  • sed 's/// /g' 是不正确的命令,它应该看起来像 's/\// /g'
  • 哦..是的,对不起,找到。 -maxdepth 1 -type f -follow |剪切-d/ -f2 | xargs -I % 读取链接 -f % |剪切-d\/ -f7,14 | sed 's/\// /g' |排序
  • 搜索没有产生手册页? findxargscutreadlinksed

标签: shell unix command-line cut xargs


【解决方案1】:

分解是最好的方法。

首先在当前目录中运行一个查找命令。 ,通过使用值 1 将搜索深度限制为仅到当前目录,搜索类型仅限于文件(类型 f),并使用实际文件属性以防它通过使用 -follow 获得符号链接。即跟随一个符号链接。

即到这里

找到 . -maxdepth 1 -type f -follow

从那里简单剪切 - 如果分隔符是 / (-d/) 则剪切第二个字段 (-f2) 以删除点 - 您将从查找列表中看到的当前目录。

到此为止 寻找 。 -maxdepth 1 -type f -follow |剪切 -d/ -f2

然后将输出通过管道传输到 xargs 并运行命令 readlink 以规范化模式打印链接到符号链接的实际文件(以给出链链接文件的名称)Check example here

如果分隔符为“\”,则将输出传递给 cut 以获取第 7 和第 14 个字段。

只有当你有与该深度的链接时,你才会从这里看到任何输出,但这是可能的。

然后使用 sed 's/// /g' 在输出中搜索“\”(转义由 / 完成)并替换为“”空格。 sed 的全局搜索和替换模式 - 将所有出现的 \ 替换为 " " 空格。

命令的意图是什么?我认为它会查找符号链接,然后找到实际的链接文件。我不太明白只切割第 7 和第 14 场然后用斜线替换的原因。可能用户正在寻找特殊深度的目录。

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 2021-03-29
    • 1970-01-01
    • 2023-03-31
    • 2013-02-05
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多