Преобразовать вывод `ls -lR` в формат вывода` find` - PullRequest
1 голос
/ 10 мая 2011

Мне нужно преобразовать вывод 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 Ответ

1 голос
/ 10 мая 2011

Вы можете использовать -ls как основной (что немного отличается от ls -l) или -exec ls -l {} +. Однако он никогда не будет полностью таким же, как ls -lR, поскольку он выполняет различные группировки и печатает итоги.

На самом деле, я думаю, find . -type d -exec ls -l {} + является ближайшим приближением.

...