将`ls -lR`输出转换为`find`输出的格式

时间:2011-05-10 17:10:25

标签: find format ls directory-listing

我需要将ls -lR输出转换为find输出

的格式

E.g。我有一个文本文件,它是ls -lR的输出。该文件包含:

/tmp/1:
total 0
drwxr-xr-x 3 user1 ubuntu 80 May 10 21:13 2
-rw-r--r-- 1 user1 ubuntu  0 May 10 21:13 f1

/tmp/1/2:
total 0
drwxr-xr-x 2 user1 ubuntu 60 May 10 21:13 3
-rw-r--r-- 1 user1 ubuntu  0 May 10 21:13 f2

/tmp/1/2/3:
total 0
-rw-r--r-- 1 user1 ubuntu 0 May 10 21:13 f3

我想将此文件转换为具有不同格式的第二个文件,就像默认情况下find实用程序一样:

/tmp/1
/tmp/1/f1
/tmp/1/2
/tmp/1/2/f2
/tmp/1/2/3
/tmp/1/2/3/f3

如果我有用于生成ls-lR的fs,我只会运行find /tmp/1,但在我的情况下,我无法访问原始的fs。

有可能吗?此转换必须有一个简短的perl脚本。

1 个答案:

答案 0 :(得分:1)

您可以使用-ls作为主要(与ls -l略有不同)或-exec ls -l {} +。然而,它将永远不会与ls -lR完全相同,因为它会进行不同的分组和打印总数。

实际上,我认为find . -type d -exec ls -l {} +是最接近的近似值。