実際には、ワイルドカードやシェル拡張を使わずにfoo-*フォルダにどのように入れることができますか?

実際には、ワイルドカードやシェル拡張を使わずにfoo-*フォルダにどのように入れることができますか?

断片

見つかった最初のディレクトリを入力するコマンドを探していますfoo-something。たとえば、次のようになります。

cd foo-*

ただし、ワイルドカード(または他の特殊なシェル文字)は使用されません。

とても長い話

リモートの drush ビルドスクリプトの一部として名前を変更できますが、共通のプレフィックスがあるフォルダに入る方法を見つけようとしています。のような例:drush -y dl adsまたはdrush -y dl ads --devダウンロードads-7.x-1.0-alpha1またはads-7.x-1.x-dev)。

作業をさらに面倒にするために、コマンドには次のものを含めることはできません。ワイルドカードまたはエスケープセミコロン、drushは多くのシェルエイリアスをエスケープするためです。

だからls *詰まり、ls '\''*'\'''最終的に間違った結果が得られますCommand ls '*' failed.

私も試してみましたが、基本はfind利用できません。-execセミコロンをエスケープする必要があります。'\''\;'\''、drushは()で二重エスケープします。

foo-*したがって、可能であれば、ワイルドカード(または他の特殊文字、パラメータ拡張、コマンド置換、算術拡張など)を使用せずにフォルダに入れたいと思います。

私はシェル脱出のロジックが次のようになると思います。ここescapeshellarg()Linuxと同じように動作します。それがすることは、すべてのパラメータをエスケープすることです。

ベストアンサー1

ドラッシュ錆にはバックティックと縦棒がありますか?それ以外の場合は、次のものを使用できます。

cd `ls | grep foo- | head -n 1`

バックティックが機能しないが|$および(動作する場合、)上記を次のように変更できます。

cd $(ls | grep foo- | head -n 1)

ただし|、うまくいかずに$動作する(場合は、)次のことができます。

cd $(myprog)

myprogディレクトリ名を決定するために作成したスクリプトはどこにありますか?

findまた、 - を使用して実行するのにどのように役立つかはわかりませんがcd-exec使用して終了できますか+

おすすめ記事