rpmパッケージのファイルのみを一覧表示

rpmパッケージのファイルのみを一覧表示

起動すると、rpm -ql <somerpm>rpmパッケージに含まれているファイルとディレクトリが一覧表示されます。厳密に言えば、ディレクトリではなくファイルだけをリストしたいと思います。

rpm -ql <somerpm>各出力がディレクトリかどうかを個別にチェックすることに依存しないフラグやコマンドがあります(たとえば、各行[ -d $line ]のシェルでテストを実行します)。

ベストアンサー1

rpmファイルリストの出力にディレクトリを抑制する組み込みオプションがないようです。

ただし--queryformat、(なし)オプションを使用して-l各ファイルのファイルモードとファイル名を印刷し、出力をパイプしてgrepモードフィールドが次に始まるエントリを除外できますd

rpm -q --qf '[%{FILEMODES:perms} %{FILENAMES}\n]' some_rpm | grep -v '^d'

これにより、実際のファイル項目のモードフィールドが印刷され続けます。これを抑制するには、少し複雑な手順を使用できますsed

rpm -q --qf '[%{FILEMODES:perms} %{FILENAMES}\n]' some_rpm | sed -nE '/^[^d]/s/.* //p'

デフォルトでは、これは出力を抑制し、これを実行する行のみを考慮します。いいえd最初の列から始めて削除します。


以前のバージョンの回答

ls -lただし、詳細出力がファイルのスタイルリストを印刷し、出力をパイプすることで、権限grepフィールドが次に始まる項目を除外するという事実を利用できますd

rpm -ql -v some_rpm | grep -v '^d' 

これで、まだ「フル」出力スタイルが維持されます。出力を物理ファイル名に制限するには、awk実際のファイル名である最後の列のみを印刷する少し複雑なプログラムに出力をパイプできます。ファイルが->最後から2番目の列として識別されるシンボリックリンクであることを確認するチェックを含めました。この場合、リンク先の代わりにリンク名が印刷されます。

rpm -ql -v some_rpm | awk '$1 !~ /^d/ {if ($(NF-1) != "->") {print $NF;} else {print $(NF-2)}}'

しかし、これは偶然発見されるでしょうファイル名にスペースが含まれています。だから、ここに注意してください。

おすすめ記事