2010-05-27 5 views
3

기본적으로 모든 파일을 폴더에 반복적으로 나열하고 1,2,3,4와 같이 나열된 각 파일에 식별자를 제공하는 "id file_absolute_path"형식의 파일을 작성하려고합니다.유닉스에서 ls 출력의 번호를 매기는 방법은 무엇입니까?

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

는 그러나, 나는 ls 명령의 출력에서 ​​식별자를 제공 드릴 수 없습니다 :

나는 반복적으로 다음 명령을 사용하여 파일의 절대 경로를 얻을 수 있습니다. awk를 사용하여이 작업을 수행 할 수 있다고 확신하지만 해결할 수는 없습니다.

+2

ls -d $ PWD/**/*/* 정말 실용적입니다. 너무 많은 파일과 glob은 실패합니다. 특수 문자가있는 경로 이름은 오류를 발생시킵니다. 3보다 깊은 디렉토리 구조는 캡처되지 않습니다. 찾기 기능을 사용하는 것이 더 좋습니다. –

답변

13

출력을 cat -n 통해 파이프하십시오. |

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

+0

+1 새로운 'cat' 플래그에 대해 알지 못했습니다. 시원한! – Ukko

+0

+1 답변 해 주셔서 감사합니다. 귀하의 답변과 Viraptor의 답변이 모두 작동합니다. – Snehal

1

ls -i을 수행하는 경우 id가 큰 inode 번호가 표시됩니다.

inode 사용시 발생할 수있는 유일한 문제는 inode가 파일 시스템 내에서 유일한 것으로 보장되므로 폴더가 여러 파일 시스템에 걸쳐있는 경우입니다.

+0

아마도 OP는 번호가 매겨진 메뉴 또는 유사한 것을 만들려고합니다. inode 번호가 그 용도에 적합하다고 생각하지 않습니다. –

6

은 당신의 명령입니다 AWK '{X = X + 1} {인쇄 X ""$ 0}'

+0

+1 답변 해 주셔서 감사합니다. 당신의 대답과 Mattew Slattery 대답은 모두 작동합니다. – Snehal

0

LS -1 $ PWD/**//을 -d 출력 라인에게 번호를합니다 x 가정

5

두 추적 할 수없는 가망 명령 :

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

NL 풋 번호는 라인을 파일에.

이 부분도 분명히 알기를 바랍니다.

1

거기에는 nl이라는 도구가 있습니다.

ls -la | nl

관련 문제