web-dev-qa-db-ja.com

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

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

find . -name *.xyz

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

find . -name *xyz | open

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

12
DrummerB

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

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

これはcat fileFound.xyz; cat fileFound2.xyx;などを返します。ただし、1つのファイルが見つかるだけです。

\;+に変更すると、場合によってはcat fileFound.xyz fileFound2.xyzが返されることに注意してください。

詳細については、次のように説明します この質問

10
matchew

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

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

find . -name \*xyz | xargs gwenview

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

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

あなたが探しているコマンドはxdg-openと呼ばれます

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

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

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

$(find . -name *.xyz)
2
mkj

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

find . -name \*xyz | xargs vim -p
0
Cory Klein