Как пронумеровать вывод ls в unix? - PullRequest
4 голосов
/ 27 мая 2010

Я пытаюсь написать файл в формате - «id file_absolute_path», который в основном перечисляет все файлы рекурсивно в папке и дает идентификатор каждому файлу, указанному как 1,2,3,4.

Я могу получить абсолютный путь к файлам рекурсивно, используя следующую команду:

ls -d -1 $PWD/**/*/*

Однако я не могу дать идентификатор из выходных данных команды ls. Я уверен, что это можно сделать с помощью awk, но не могу решить его.

Ответы [ 6 ]

15 голосов
/ 27 мая 2010

Пропустить выход через cat -n.

7 голосов
/ 27 мая 2010

Предполагая, x ваша команда:

x | awk '{print NR, $0}'

будет нумеровать выходные строки

5 голосов
/ 28 мая 2010

Две возможные команды:

ls -d -1 $PWD/**/*/* | cat -n
ls -d -1 $PWD/**/*/* | nl

nl помещает числа в строки файла.

Надеюсь, это тоже проясняет.

2 голосов
/ 31 мая 2010

Для этого есть инструмент с именем nl.

ls -la | п

1 голос
/ 27 мая 2010

Если вы сделаете ls -i, вы получите номер инода, который отлично подходит как идентификатор.

Единственная потенциальная проблема с использованием inode заключается в том, что папка охватывает несколько файловых систем, поскольку гарантируется, что inode уникален только в файловой системе.

0 голосов
/ 27 мая 2010

ls -d -1 $ PWD / ** / / | awk '{x = x + 1} {print x "" $ 0}'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...