「検索」を使用して開始点でルートを検索する方法

「検索」を使用して開始点でルートを検索する方法

conEmuを使用しているWindowsには、ある種のLinux端末があります。

Windowsでは、sublimeを使用してファイルを開くように変数を設定し、次のようにファイルを開くことができます。

$subl path/filename

仮想マシンがあり、ローカルと仮想ホストの両方に同じコードがありますが、パスは異なります。

D:\work (in win)
/home/work/ (in the server)

私がするなら:

$ ssh [email protected] 'find . -type f -name example.txt'

わかりました。/home/work/public/example.txt しかし、崇高な内容で開くために使用することはできません。

subl $(ssh [email protected] 'find /home/work -type f -name example.txt') //doesn't work

したがって、/home/work で始まるパスだけが必要です。public/example.txt (or ./public/example)

findを使用して開始点からルートを取得するにはどうすればよいですか?

答え1

.問題がないと言ったので、まずディレクトリにCDを移動できます。

(cd somedir && find . [...])

%PGNU findを使用すると、書式指定子を使用することもできます。

find somedir -printf '%P\n'  # \0 is safer if you can interpret nulls as delim

からman find

%P:ファイル名とファイルが見つかった開始点の名前が削除されました。

答え2

解決策は「簡単」です。自宅へのパスを表示してから文字列からテキストを削除する~ためにのみ使用できます。sed

find . -type f -name file | sed "s+$(echo ~)++"

$(echo ~)結果echo ~は/家/職場です

Linuxに文字列内の変数を見つける必要があると言う"のではなく、次のものを使用する必要があります。'

パスの問題を回避するために、/(より一般的に使用される)の代わりに+を使用します。

sed 's//home/work//' cause problems
sed 's+/home/work++' doesn't

関連情報