2011-05-10 68 views
1

我需要ls -lR输出转换成find输出转换`LS -lR`输出到find`输出的`格式

例如格式我有一个文本文件,这是一个输出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 

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

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

回答

1

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

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

+0

你的答案是“如何从查找生成ls -l'-like输出”。感谢您指向'-ls'选项。不幸的是,我无法访问文件系统,其中生成了ls-lR并且我的任务是反向的,我只想将'ls -lR'输出转换为'find'样式的输出。 – osgx 2011-05-10 17:20:21

+1

哦,我明白你的意思了。总之:不。如果从选项中转储l,-R仍会进行花式打印分组,这很难转换为find中的一行输出。 – Mel 2011-05-10 17:24:30

+0

这不是很难,它可以用.... awk或perl进行转换。但是需要单独的脚本甚至程序。 – osgx 2011-05-10 17:26:38