2017-05-22 19 views
0

シェルスクリプトを使用して、指定されたパスのすべてのフォルダの絶対パスをリストしたいとします。指定されたパスの絶対パスのリスト - シェル

ls -l /var/www/temp 

しかし、私は絶対パスの一覧を表示しますlsコマンドのオプションを見つけることができませんでした:私が試した何

です。

私はStackOverflowの中に関連する質問が見つかりました:how to list full paths of folders inside a directory in linux?

をしかし、私に必要なのは、私は彼らの絶対パスで指定されたパス(このパスは異なります)内のすべてのフォルダを一覧表示する必要がある単一のコマンド自体です。

誰でもこの操作を手伝ってもらえますか?前もって感謝します。

+1

[Unixのlsコマンド:オプションを使用すると完全なパスを表示]の可能な複製(http://stackoverflow.com/questions/5580828/unix-ls-command-show-full-path-when-using-options) – Dymen1

+0

リンク先の質問の重複とマークされている質問の[this anwser](https://stackoverflow.com/a/16768547)では、既に必要なことをしていませんか? –

+0

@ Dymen1..その解決策の質問どこで私はパスを指定できますか? – Jenz

答えて

0

これは役立ちますが、それはあなたが見つけるとPWDの置換を使用することができます「LS」

を使用していません。

find /var/www/temp -type d 

ただし、画面にリストが出力されることがあります。

0

シェル機能はどうですか?

dabspath() { 
if [ -d "$1" ] 
then 
    cd "$1" 
    find "$PWD" -type d 
    cd "$OLDPWD" 
else 
    echo "$0: $1: No such directory" 
fi 
} 

使用:dabspath foo

fooが現在の作業ディレクトリへのディレクトリの相対である場合、それがfooの絶対パスと任意のサブディレクトリを印刷します。

0

for D in `find . -maxdepth 1 -type d`; do echo $PWD${D#.}; done

それはどのように動作します:

  1. まず、bashはバッククォート内でfindコマンドを実行して、すべての直接のサブディレクトリの名前でリターンを、見つけるものとバッククォートで部品を交換します作業ディレクトリ。
  2. 次に、forループはすべてのサブディレクトリを通過し、変数Dに格納されている各サブディレクトリに対して、作業ディレクトリ($ PWD)に続いてサブディレクトリDが続くパスを出力します。このディレクトリからprexif " "。こうすることで、絶対パスが期待どおりに印刷されます。

注:すべてのディレクトリにはハードリンク( "。"サブディレクトリ)があるため、作業ディレクトリへのパスも表示されます。