あってもおかしくないのに、見当たらなかったので。
私の探し方がまずかったのかな…?
念のため、備忘録おいときます。
find -ls -maxdepth (n)
一番手っ取り早いのはこれ。
とはいえ、ls -Rの出力形式のようにしたい場合はfindは邪魔になります。
力技でいい感じにするというのも手ではありますが、今回はlsにこだわります。
キーポイント
ターミナルでpwdを打つ機会は多いと思いますが、$PWD
で自分の場所がフルパスで取れます。
$(PWD)
でもPWD
でも同じです。
これを使って、今いる場所(./)をフルパスに置き換える、というのが目的です。
仕組み自体はそんな難しくないです。
fullls.sh
# !/bin/sh
nowDir=$PWD
cd $(dirname "lsで取りたいディレクトリ")
ls -R $PWD
cd ${nowDir}
これだけです。とても簡単!
nowDirしているのは、lsした後で今いる場所に戻ってくることがあるかも知れないので、念のため入れてます。
気をつけてほしいのが、nowDirでsh実行をする想定でteeとかしたい場合は以下のようにします。
tee.sh
# !/bin/sh
# shファイルのフルパスをthisに持っておく
cd $(dirname ${0})
this=$(PWD)
...
ls -R $PWD | tee ${this}/tee.txt
これでどこに移動しても一意の場所を設定できます。
結構落とし穴なので、出力先の設定も絶対パスにするようにしましょう。
逆に、相対パスで都合がいい場合はこの限りではありませんが、運用に気をつけてください。