Преобразовать вывод `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

Если у меня есть фс, который использовался для генерации ls-lRЯ просто побегу find /tmp/1, но в моем случае у меня нет доступа к оригинальной фс.

Является ли это возможным? Там должен быть короткий Perl-скрипт для этого преобразования.

1 ответ

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

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

Другие вопросы по тегам