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

関連情報