grep에서 inode 정보 인쇄

grep에서 inode 정보 인쇄

저는 현재 Linux를 배우고 있는데 일부 실습으로 인해 완전히 당황했습니다. 현재 디렉터리에서 특정 텍스트가 포함된 파일을 찾아 해당 파일의 inode 번호를 출력하려고 합니다. 나는 이 모든 것을 개별적으로 자신있게 할 수 있지만, 하나로 합치려고 하면 무너집니다.

 find. -maxdepth 1 -type f | grep -r "#include" -ls -i 

그런데 무슨 이유에서인지 파일 이름만 출력되나요?

어떤 아이디어가 있나요?

답변1

find . -type f -exec grep '#include' {} \; -printf '%p %i\n'

또는 grep -q grep 출력 숨기기

find . -type f -exec grep -q '#include' {} \; -printf '%p %i\n'

답변2

grep재귀 모드에서 사용하는 경우 실제로는 다음 명령이 -r필요하지 않습니다 .find

grep+매개변수방법:

grep -rl '#include' | xargs -I {} ls -i '{}'

대략적인 출력( <inode> <filename>):

1837827 test/1.pdb
1712970 2_clean.pdb
1837846 test2/2.pdb
1712965 1_clean.pdb

답변3

검색은 현재 디렉터리로 제한되므로 도트 파일에 관심이 없다면 더 쉬운 방법을 사용하여 이 작업을 수행할 수 있습니다 grep -l.명령 대체및 와일드카드( *):

ls -i $(grep -ls '#include' *)

산출:

109057734 file1.txt  109056004 file2.txt  5505834 file3.txt

또는 이전 구문을 사용하고 대신 백틱을 사용하세요 $().

ls -i `grep -ls '#include' *`

-s다음 옵션 을 추가했습니다.grepgrep 디렉토리에 대한 일부 경고를 제거합니다.

멋진 열을 원한다면 -1옵션을 추가하세요엘에스.

ls -i1 $(grep -ls '#include' *)

산출:

109057734 file1.txt
109056004 file2.txt
  5505834 file3.txt

관련 정보