49

次の出力を受け取りたいと思います。

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

  -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

4

7 に答える 7

90

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

dir /ad /b /s

すべてのファイル (およびディレクトリなし) を一覧表示するには:

dir /a-d /b /s

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

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

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

于 2009-04-14T13:16:16.330 に答える
27

シェル内:

find . -type d

現在の作業ディレクトリからディレクトリを指定し、次のようにします。

find . -type f

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

目的のディレクトリに置き換え.ます。

于 2009-04-14T13:13:36.447 に答える
26

バッシュ/Linux シェル

ディレクトリ:

find ./ -type d 

ファイル:

find ./ -type f 

ファイルへの Bash/Shell

ディレクトリ:

find ./ -type d  > somefile.txt

ファイル:

find ./ -type f  > somefile.txt
于 2009-04-14T13:13:27.477 に答える
7

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!
)

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

 (*.*)
于 2009-04-14T13:47:08.550 に答える
4

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

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

ATTRIB はより多くを検出するため、はるかにうまく機能します。(この違いはなぜですか?なぜ MS は、この点で 1 つのユーティリティをある方法で動作させ、別のユーティリティを別の方法で動作させるのでしょうか?私が知っていれば気の毒です。)私の経験では、これを処理する最も効果的な方法は、それは面倒ですが、2 つのリストを取得することです。

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

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

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

于 2014-01-16T11:34:35.283 に答える
3

Windows の場合:

dir /ad /b /s

dir /ad /b /s

于 2009-04-14T13:16:11.713 に答える
3

Linux では、単純な

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

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

于 2009-04-14T13:18:40.723 に答える