説明
シェルでファイルのフルパス名をサクッと取得する方法はありませんか?
簡単な方法があるのだろうなと思いつつなかなか見つかりません。
ファイル1個であれば次のように叩いています。
$ find $PWD -name 'hoge'
まあ普段はこれで間に合っていますが、指定パス名の展開や正規化までしてくれるようなコマンドがほしいときもあります。
イメージとしては
find
結局あきらめてベタなスクリプトを書いてしのいでますが、本当はもっと簡単でいい方法があるはずだと思っています。
コメント

- 3:mikeda
- 2008/08/31 01:24
自分もこまってます。いい方法ないですかねー
realpathってコマンドをインストールすれば、という情報もありますが汎用的に使えるものじゃないと。
ファイル1つだけなら
#
とか
#
とかでタブ打つと置換してくれるのでそれ使ってなんとかしてます。
(手近なshとbashではいけました。)
でもこれだとスクリプトに組み込めないので、スクリプト書く場合は自分もfindするかbasenameにくっつけてます・・・

- 4:ゲスト (BLUEPIXY)
- 2008/08/31 04:17
perl
のようにしてフルパスを得ることができるので、コレをコマンドにしておいたら?

- 5:mikeda
- 2008/08/31 09:55
>>4
自分も昨日、いろいろワンライナー考えてみたんですが、ベタなperlやrubyだとモジュール組み込みやらなんやらで、都度思い出して登録もけっこうたいへんだなと思ってとりあえずスルーしました。
perlだとやっぱそのへんでしょうか。
他の言語はそんな得意じゃないですがいちおう載せてみます。
・ruby
$
・シェル
$
・php(たぶんphp5以降)
$
以外とPHPが簡単でした。でもfor文も書きづらいし、perlやrubyのn,pオプションとかがないから応用が利きづらいですね。whileやxargsでごまかすのが多くなって使いづらそう。
$
(macとかファイル名に空白あるのでやると・・・)

- 6:emasaka
- 2008/08/31 13:12
LinuxなどのGNU系の環境では、readlinkコマンドという手もあるかと思います。
$ readlink -f ../../bin/ls
/bin/lsただし、コマンドの元々の機能として、シンボリックリンクは展開されます。
- 7:kumazo
- 2008/09/01 01:08
皆さんコメントありがとうございます。
単に私が知らなかっただけではなさそうなのですっきりしました。
また教えていただいたやり方はどれもすごく参考になりました。(ちょっとショックなくらい)
>
自分は普通、pwdしてlsしてぐらいであまりフルパスが
必要になったことがなくて・・・
そこなんですよね。
機能がないのはそもそも必要ないからなのでしょう。
UNIX
方法よりも考え方を身に付けたいところなのですが、なにぶん・・・
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。












残念ながら、そういう機能は聞いたことがないなぁ。 `pwd`/hoge*
$PWD/hoge/*.cc
けっこうながいことUNIX使ってるけど…。
kumazoさんのをぱくって、
find
とか
echo
とかぐらいが少しは短いか?
自分は普通、pwdしてlsしてぐらいであまりフルパスが
必要になったことがなくて・・・
お役に立てなくてすみません。