「検索」コマンドで見つかったファイルを開く


12

これはおそらく簡単なものですが、理解できず、ほとんど検索できません。フォルダー階層には、タイプxyzのファイルが1つだけあります。そのファイルを見つけて、ターミナルコマンドで開きたいのですが。

find . -name *.xyz

これにより、探しているファイルが返されます。名前を入力せずに自動的に開くにはどうすればよいですか?

find . -name *xyz | open

これは機能しません。openコマンドが見つからなかったと表示されます。


3
それはどのようなファイルですか?実行可能ファイルでない場合、どのプログラムでファイルを開きますか?ああ、Windowsは私達の人口= /に何をしたか
chownを

これはおそらくスーパーユーザーに属しています...
2011年

1
WindowsではなくMacを使用しています...ファイルをデフォルトのプログラムで開きます。

2
見つける。-name * xyz | xargsを開いて見つけます。-name * .xyz -exec open {} \; 両方が働いた。ありがとう。

解決策を見つけてよかったです。「最適」に機能したソリューションをマークすることを忘れないでください。他の人はあなたの「受け入れ」率を見るでしょう、そしてこれは将来の質問をするときに長い道のりになります。受け入れ率が低いユーザーは、質問が無視されることがよくあります。=)
2011年

回答:


10

@retracileは正しいです。「何か」で開く必要があります。ただし、xargsではなくexecを使用することを好みます。

find . -name '*.xyz' -exec cat {} \;

これはcat fileFound.xyz; cat fileFound2.xyx;等を返します。しかし、あなたは1つのファイルを見つけることを期待しています

に変更\;する+cat fileFound.xyz fileFound2.xyz、場合によっては後の方が好ましい選択に戻ることに注意してください。

詳細については、この質問にあなたを導きます


6

あなたが探しているコマンドが呼び出されます xdg-open

それであなたのコマンドを試してください:

xdg-open "$(find . -name '*xyz' | head -n1)"

6

ファイルを開くために使用するプログラムを知る必要があります。画像の場合は、gwenviewなどを使用できます。

入力を取得して引数に変換するには、xargsを使用します。そして、あなたはそのワイルドカードをエスケープしたいと思うでしょう...

find . -name \*xyz | xargs gwenview

そして、ファイル名のスペースを処理する...

find . -name \*xyz | xargs -d"\n" gwenview

2

他の人が指摘したように、あなたの質問は明確に答えるほど具体的ではありません。したがって、別の考えられる意味を推測します。それを実行可能ファイルとして実行すること意味する場合(つまり、プログラムが実行可能ファイルであること意味します)、コマンドラインの一部としてfindコマンドの出力を置き換えることをシェルに伝えます。 :

$(find . -name *.xyz)

0

で見つかったすべてのファイルfindをvimの単一インスタンスの個別のタブで開きたい場合は、次のようにします。

find . -name \*xyz | xargs vim -p
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.