web-dev-qa-db-ja.com

すべてのディレクトリとファイルを再帰的にリストする

次の出力を受け取りたいです。

ファイルシステムのディレクトリ構造が次のようになっているとします。

 -dir1 
 -dir2 
 -file1 
 -file2 
 -dir3 
 -file3 
 -file4 
 -dir4 
 -file5 
 -dir5 
 -dir6 
 -dir7 

スクリプトからの出力は次のようになります。

ディレクトリ:

/dir1 
/dir1/dir2 
/dir1/dir2/dir3 
/dir1/dir2/dir4 
/dir1/dir5 
/dir1/dir5/dir6 
/dir1/dir5/dir7 

ファイル:

/dir1 
/dir1/dir2/file1 
/dir1/dir2/file2 
/dir1/dir2/dir3/file3 
/dir1/dir2/dir3/file4 
/dir1/dir2/dir4/file5 
/dir1/dir5/dir6 
/dir1/dir5/dir7 

find . -type dおよびfind . -type fの出力を別のファイルに保存する方法を教えてください。

43
Christopher

Windowsで、ディレクトリのみを一覧表示するには:

dir /ad /b /s

すべてのファイルを一覧表示します(ディレクトリは表示しません):

dir /a-d /b /s

出力をファイルにリダイレクトします。

dir /a-d /b /s > filename.txt

ウィキペディアで説明されているdirコマンドのパラメーター

84
Andrea Bertani

シェルで:

find . -type d

現在の作業ディレクトリからディレクトリを提供します。

find . -type f

現在の作業ディレクトリからファイルを提供します。

置換.興味のあるディレクトリによって。

22
mouviciel

Bash/Linuxシェル

ディレクトリ:

find ./ -type d 

ファイル:

find ./ -type f 

ファイルへのBash/Shell

ディレクトリ:

find ./ -type d  > somefile.txt

ファイル:

find ./ -type f  > somefile.txt
21
Kent Fredric

Windowsでは、ディレクトリ名を追加で処理できる最も柔軟なソリューションとして、このようにすることができます。

FOR/Rを使用して、バッチコマンドを再帰的に実行します。

このバッチファイルを確認してください。

@echo off
SETLOCAL EnableDelayedExpansion

SET N=0
for /R %%i in (.) do (
     SET DIR=%%i

     ::put anything here, for instance the following code add dir numbers.
     SET /A N=!N!+1
     echo !N! !DIR!
)

ファイルの場合と同様に、ドットではなくセットとしてパターンを追加できます

 (*.*)
7
majkinetor

これは古い質問ですが、とにかく何かを追加すると思いました。

DIRは、特にC:のものではなく、必要なすべてのディレクトリツリーを正しくトラバースしません。保護が異なるため、単に場所をあきらめます。

ATTRIBの方がはるかに優れているため、より多くの機能が見つかります。 (なぜこの違いなのでしょうか?なぜMSが1つのユーティリティをこの方法で機能させ、別の機能をこの点で異なるようにするのでしょうか?)

attrib/s/d C:\>%TEMP%\ C-with-directories.txt

attrib/s C:\>%TEMP%\ C-without-directories.txt

それらの違いを取得します。その違いは、C:上のディレクトリです(あまりにもよく隠されているものを除く)。 C:の場合、通常は管理者として実行します。

3
djc

Windowsの場合:

dir/ad/b/s

dir/a-d/b/s

3
Peter

Linuxでは、シンプルな

find . -printf '%y %p\n'

ディレクトリとファイルが混在したすべてのアイテムのリストが表示されます。この出力を一時ファイルに保存し、「d」で始まるすべての行を抽出できます。これらがディレクトリになります。 「f」で始まる行はファイルです。

3
unwind