Unix命令readlink,xargs,sed,cut

时间:2013-09-18 11:27:00

标签: shell unix command-line cut xargs

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

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

我搜索了它,得到了maxdepth和类型的意思,但不是关于-followcut -f -f2readlinksed

-f7,14是什么意思?

1 个答案:

答案 0 :(得分:1)

分解是最好的方法。

首先在当前目录中运行find命令。 ,通过使用值1和搜索类型仅限于文件(类型f)将搜索范围限制为仅限于当前目录,并在使用-follow获取符号链接时使用实际文件属性。即遵循一个符号链接。

即到这里

找到。 -maxdepth 1-type f -follow

从那里简单剪切 - 如果分隔符是/( - d /)去除点 - 第二个字段(-f2),那么你将从find的列表中看到当前目录。

直到这里 找 。 -maxdepth 1-type f -follow | cut -d / -f2

然后将输出传递给xargs并运行一个命令readlink,它打印链接到canonicalize模式的符号链接的实际文件(给出链链接文件的名称)Check example here

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

只有在您拥有与该深度相关的链接时才能看到此处的任何输出,但这是可能的。

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

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