質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

3回答

3502閲覧

grepで絶対パスから相対パスを取得したい

tetsutail

総合スコア81

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2017/05/18 05:26

編集2017/05/18 06:11

grepで絶対パスから相対パスを取得したいのですが、
echo '絶対パス' | grep -E '正規表現'
とすると、ファイルの中を見ようとするからか、permission denied
になります。
いまやりたいことは、grepでファイル名を検索対象とする時、ファイルの中身ではなく、ファイル名自体を検索対象とし、その結果絶対パスから相対パスを取得したいです。
これを実現するにはどうすれば良いのでしょうか?
できれば正規表現も教えていただきたいのですが、こちらはなんとかなりそうなので、とりあえずファイル名を与えた時、ファイル名自体を検索対象とする方法をお教えいただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/05/18 06:03

タイトルと、コマンドと、日本語の質問文が全部ことなりますが、どれが本当の質問でしょうか?
tetsutail

2017/05/18 06:12 編集

わかりづらくすみません。ファイルの中身ではなく、ファイル名自体を検索対象とする方法でした。それを使った最終的な目標として、絶対パスを相対パスに変更したいということがあります。
honami

2017/05/18 06:20

質問のコマンドでもパス文字列自体が対象になるように思うのですが、grepコマンドそのものの実行や権限のあるファイルに対しての実行は成功しているという認識で良いですか?
tetsutail

2017/05/18 06:34

すみません。こちらに勘違いがありました。普通にファイル名を検索対象にすることができました。
honami

2017/05/18 06:42

できるだけベストアンサーは「解決した方法」に対して出すようにしてください。回答の中にない場合、自分でどのように解決したかを回答し、それにベストアンサーを出してください。その上で良い回答には高評価をつけるようにした方が、これから先同じ問題を抱える人たちのためになります。
guest

回答3

0

ベストアンサー

grepでファイル名を検索対象とする時、

という意味がよく分かりませんが、カレントディレクトリにあるファイル名で検索するなら、

ls -1 | grep 正規表現

です。
あるいは、正規表現ではないですが、例えば、

echo A*1*

で、Aで始まり途中に1を含むファイル名が表示されます。

カレントディレクトリ以下のサブディレクトリの中も検索対象にするなら、

find | grep 正規表現

投稿2017/05/18 06:26

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetsutail

2017/05/18 06:37

すみません。こちらの勘違いでした。.shファイルの中で編集をしていてスクリプトの保存をしていなかったのが原因でした。勉強になりましたので、ベストアンサーにさせていただきます
guest

0

grep -l PATTERN [FILE]
これで大丈夫かと

投稿2017/05/18 05:36

haneru

総合スコア440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetsutail

2017/05/18 06:15

回答ありがとうございます。 ただ、-lオプションでは、結局ファイルの中身を検索していると思います。 ファイルの中身ではなく、ファイル名を文字列としてファイル名自体を検索対象としたいのです。
tetsutail

2017/05/18 06:37

すみません。こちらの勘違いでした。.shファイルの中で編集をしていてスクリプトの保存をしていなかったのが原因でした。
guest

0

絶対パスから相対パスを得たいという事でしたら

find [検索パス] | grep [正規表現] | xargs -t -n 1 -I{} realpath --relative-to = {}

というような形で如何でしょうか?

投稿2017/05/18 06:42

mitsu6809

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問