2016-07-28 6 views
1

ファイル構造をディレクトリにリストして、システムの構造のスナップショットを保存しようとしました。私はそれがLinuxに素早くネイティブなので、findで試しています。findコマンドはファイル構造を2回返しますか?

私が試した:

find $PWD * -ls 

を何とかファイル構造は、このように、二回返されました:

8022 1 drwxr-x--- 2 user1  my-group  3 Jun 28 23:15 /home/user1/projects/wrapper 
    8158 10 -rw-r----- 1 user1  my-group  160 Jun 28 23:15 /home/user1/projects/wrapper/wrapper.sh 
    41 1 drwxr-x--- 3 user1  my-group  3 Jun 28 13:17 /home/user1/projects/WGS 
    42 1 drwxr-x--- 2 user1  my-group  3 Jun 28 13:18 /home/user1/projects/WGS/test 
    41 1 drwxr-x--- 3 user1  my-group  3 Jun 28 13:17 WGS 
    42 1 drwxr-x--- 2 user1  my-group  3 Jun 28 13:18 WGS/test 
    8022 1 drwxr-x--- 2 user1  my-group  3 Jun 28 23:15 wrapper 
    8158 10 -rw-r----- 1 user1  my-group  160 Jun 28 23:15 wrapper/wrapper.sh 

なぜ、このように見つけるの挙動はありますか?一度だけ印刷する方法はありますか?理想的には、完全なパスを保持することをお勧めします。

ファイル構造をアーカイブする優れたツールがある場合は、教えてください。

ありがとうございます!

編集:私はRhymoidとJohn1024への結果のおかげだ、なぜ私が理解

最初の2つの列の数字が何であるか知っている人はいますか?

+2

'find $ PWD * -ls'シェルは' find/home/user1/projects'にカレントディレクトリ( 'wrapper WGS')のすべてのファイル名の後ろに' -ls'を続けて展開します。あなたは実際にこれを行うために 'find'を要求しています。代わりに、おそらく 'find。 -ls'。 –

+1

また、絶対パスを保持するために、 'find" $ PWD "-ls'(星なし) – John1024

+0

@Rhymoidありがとう! find $ PWD -ls works!あなたはそれを答えることができ、私はそれを受け入れます。 – olala

答えて

2

findはうまくいきます。それはあなたがするべきことを正確に行います。

/home/user1/projectsは現在のディレクトリで、ファイルWGSwrapper(両方のディレクトリ)のみが含まれていると推測します。あなたは、コマンドシェルで

find $PWD * -ls 

を渡すと、それは(途方もなく複雑なシステムを使用して、そのほとんどがstandardised as part of POSIXある)が展開され、それが実際に実行される前に。この場合、

    find
  • ワードは、ワード$PWD/home/user1/projectsに拡張され
  • findに拡大されます。つまり、環境変数PWD(作業ディレクトリのパス)の値である
  • *という語は、pathname expansionのためWGS wrapperに展開されています。
  • -lsという語は-lsに展開されています。

たコマンドは、実際に二回、現在のディレクトリとその下位にあるすべてのファイルを印刷し

find /home/user1/projects WGS wrapper -ls 

です。あなたはおそらく欲しい


は、このコマンドを変更しない

find . -ls 

Wordの拡張、および現在の作業ディレクトリとしてfind解釈.です。あなたは完全なパスを保持したい場合はまた、あなたがしたい

find "$PWD" -ls 

Wordの展開は、このコマンドを変更しますが、$PWD周りに二重引用符は、拡張にスペースを紹介した場合、それはまだ1つの引数残ることを確認してください。

関連する問題