转换`LS -lR`输出到find`输出的`格式
问题描述:
我需要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脚本。
答
您可以使用-ls作为主(与ls -l略有不同)或-exec ls -l {} +。然而,它将永远不会与ls -lR完全相同,因为它会执行不同的分组和打印总计。
其实我认为find . -type d -exec ls -l {} +
是最接近的近似值。
你的答案是“如何从查找生成ls -l'-like输出”。感谢您指向'-ls'选项。不幸的是,我无法访问文件系统,其中生成了ls-lR并且我的任务是反向的,我只想将'ls -lR'输出转换为'find'样式的输出。 – osgx 2011-05-10 17:20:21
哦,我明白你的意思了。总之:不。如果从选项中转储l,-R仍会进行花式打印分组,这很难转换为find中的一行输出。 – Mel 2011-05-10 17:24:30
这不是很难,它可以用.... awk或perl进行转换。但是需要单独的脚本甚至程序。 – osgx 2011-05-10 17:26:38