ファイルのフルパス名を取得する
kumazo
kumazo
ATOMRSS
  • ソースコードID: 612
  • 登録日時: 2008/08/30 15:25
  • 最終更新日時: 2008/09/01 01:08
  • アクセス数: 1240
  • タグ:  フルパス名
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加
  • GoodJob
  • 5

GJGJGJGJGJ

説明

シェルでファイルのフルパス名をサクッと取得する方法はありませんか?
簡単な方法があるのだろうなと思いつつなかなか見つかりません。

ファイル1個であれば次のように叩いています。

$ find $PWD -name 'hoge'
まあ普段はこれで間に合っていますが、指定パス名の展開や正規化までしてくれるようなコマンドがほしいときもあります。

イメージとしては ls にフルパス表示モードがあればいいのですが、ないですよねぇ。
find のオプションをうまく駆使すればできるのかもしれませんが、これもなかなか癖があって一筋縄ではいかないようです。

結局あきらめてベタなスクリプトを書いてしのいでますが、本当はもっと簡単でいい方法があるはずだと思っています。



ソースコード

コメント

  • ゲスト
  • 1:ゲスト (み)
  • 2008/08/30 22:37

残念ながら、そういう機能は聞いたことがないなぁ。
けっこうながいことUNIX使ってるけど…。
kumazoさんのをぱくって、
find `pwd`/hoge*
とか
echo $PWD/hoge/*.cc
とかぐらいが少しは短いか?

自分は普通、pwdしてlsしてぐらいであまりフルパスが
必要になったことがなくて・・・
お役に立てなくてすみません。


GJ

自分もこまってます。いい方法ないですかねー
realpathってコマンドをインストールすれば、という情報もありますが汎用的に使えるものじゃないと。

ファイル1つだけなら
ls `pwd`/
とか
ls `pwd`/../
とかでタブ打つと置換してくれるのでそれ使ってなんとかしてます。
(手近なshとbashではいけました。)

でもこれだとスクリプトに組み込めないので、スクリプト書く場合は自分もfindするかbasenameにくっつけてます・・・

GJGJ

  • ゲスト
  • 4:ゲスト (BLUEPIXY)
  • 2008/08/31 04:17

perl -MFile::Spec -e 'print File::Spec->rel2abs("$ARGV[0]")' ./filename
のようにしてフルパスを得ることができるので、コレをコマンドにしておいたら?

GJ

>>4
自分も昨日、いろいろワンライナー考えてみたんですが、ベタなperlやrubyだとモジュール組み込みやらなんやらで、都度思い出して登録もけっこうたいへんだなと思ってとりあえずスルーしました。
perlだとやっぱそのへんでしょうか。

他の言語はそんな得意じゃないですがいちおう載せてみます。
・ruby
ruby -rpathname -e 'puts Pathname.new(ARGV[0]).realpath' ../filename
・シェル
sh -c 'cd `dirname $0` && echo $PWD/`basename $0`' ../filename
・php(たぶんphp5以降)
php -r 'print(realpath($argv[1])."\n");' ../filename

以外とPHPが簡単でした。でもfor文も書きづらいし、perlやrubyのn,pオプションとかがないから応用が利きづらいですね。whileやxargsでごまかすのが多くなって使いづらそう。
echo ../* xargs -n php -r 'print(realpath($argv[1])."\n");'
(macとかファイル名に空白あるのでやると・・・)

GJGJ

LinuxなどのGNU系の環境では、readlinkコマンドという手もあるかと思います。

$ readlink -f ../../bin/ls
/bin/ls
ただし、コマンドの元々の機能として、シンボリックリンクは展開されます。

GJGJ

皆さんコメントありがとうございます。
単に私が知らなかっただけではなさそうなのですっきりしました。
また教えていただいたやり方はどれもすごく参考になりました。(ちょっとショックなくらい)

1:ゲスト (み) さん

自分は普通、pwdしてlsしてぐらいであまりフルパスが 
必要になったことがなくて・・・ 

そこなんですよね。
機能がないのはそもそも必要ないからなのでしょう。
UNIX ネイティブな人の生活では、フルパスを取ったりしないのですよ、たぶん。
方法よりも考え方を身に付けたいところなのですが、なにぶん・・・



GJ

前へ 1 次へ

コメントする

[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。

[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。

ゲスト投稿者:ゲスト:

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

ソースコードのブログパーツ

デフォルトのフォントサイズ
修飾
表示サイズ
px px
プレビュー (表示する)
下のプレビュー領域をクリックすると、ポップアップで全体を見ることができます。
パラメータが不正です

    GoodJobしたユーザ

    • 台北猫々
    • gom

    ブックマークコメント

    関連するなにがし

    前へ 1 次へ

    タグ

    dyndnsbytearrayinputstreamobjectinputstreambytearrayoutputstreamobjectoutputstreamディープコピーdeepcopyarraylistiteratorチェックボックス複数multibytexencentos文字エンコーディングinit_connectcharacter-set-servercollation-serverdefault-character-setf:label動的メソッド呼び出しヘルパーメソッドwsse2重登録防止prototype.js位置positionpositionedoffsetscrolltoスクロールlink_tocyclecheck_box_tagチュートリアルactive_formerror_messages_forハイライトバリデーションvalidate便利リストデコレーションメールデコメ非対応機種tilestext_field_tag一括複数情報etherealrtphexテキストデータ抽出validwhenリセット一括更新plop置換replacepcoslogmixisregソケットnet::telnetfopenmutexサンプルcalendar[linux][bash][シェルスクリプト][大容量]mobilerorrails2.1clipboardクリップボード横向きピラミッドs2jdbc-genjsonicお絵かきフルパス名抽出サブドメインサブドメイン名s2jdbc自動生成エンティティドコモxhtmlrestdoltengspidering背景変更グラデーションiso一括登録xトークンチェックevalmonitorslavereplication画像処理

    前へ 1 2 3 ... 8 次へ