パスなしで実行可能なファイル名を見つける


9

多くの実行可能ファイルを含むフォルダーがあり、findコマンドの結果でパスを省略したいと思います。このコマンドは、表示したいファイルを表示しますが、パスもリストします。ファイル名が欲しいだけです。

find /opt/g09 -maxdepth 1 -executable

findの出力を取得して、フルパスではなくファイル名のみを表示するにはどうすればよいですか?

回答:


10

または使用:

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

-type fフラグの追加もここで機能します。

findマニュアルから:

 %f     File's name with any leading directories removed (only the last element).

この答えはあなたがGNUを持っていることを必要とするだけですがfind、他の人はあなたの結果を操作するために他のプログラムを必要とします。


-type fそれが私が考えていたものです!コーディングマンありがとう!
j0h

@ j0hは問題ありません!
nixpower 2015

6

使用basename

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

からman basename

Print NAME with any leading directory components removed.

また、あなたはfindすべてを試みており、検索をファイルのみに制限するには、以下を使用します:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;

3

私にとって最も明白な解決策は

(cd /opt/g09; find -maxdepth 1 -executable)

サブシェルを開始するので、同じディレクトリに残ります。この方法の利点は、解析が不要なことです。欠点は、サブシェルを開始することです(ただし、それを感じることはありません)。


1
それは賢い考えです。
AB


1

組み合わせを使用findし、perl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

いくつかのPerlを学ぶための素晴らしい方法:P
nixpower
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.