次の出力を受け取りたいです。
ファイルシステムのディレクトリ構造が次のようになっているとします。
-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
の出力を別のファイルに保存する方法を教えてください。
Windowsで、ディレクトリのみを一覧表示するには:
dir /ad /b /s
すべてのファイルを一覧表示します(ディレクトリは表示しません):
dir /a-d /b /s
出力をファイルにリダイレクトします。
dir /a-d /b /s > filename.txt
シェルで:
find . -type d
現在の作業ディレクトリからディレクトリを提供します。
find . -type f
現在の作業ディレクトリからファイルを提供します。
置換.
興味のあるディレクトリによって。
ディレクトリ:
find ./ -type d
ファイル:
find ./ -type f
ディレクトリ:
find ./ -type d > somefile.txt
ファイル:
find ./ -type f > somefile.txt
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!
)
ファイルの場合と同様に、ドットではなくセットとしてパターンを追加できます
(*.*)
これは古い質問ですが、とにかく何かを追加すると思いました。
DIRは、特にC:のものではなく、必要なすべてのディレクトリツリーを正しくトラバースしません。保護が異なるため、単に場所をあきらめます。
ATTRIBの方がはるかに優れているため、より多くの機能が見つかります。 (なぜこの違いなのでしょうか?なぜMSが1つのユーティリティをこの方法で機能させ、別の機能をこの点で異なるようにするのでしょうか?)
attrib/s/d C:\>%TEMP%\ C-with-directories.txt
attrib/s C:\>%TEMP%\ C-without-directories.txt
それらの違いを取得します。その違いは、C:上のディレクトリです(あまりにもよく隠されているものを除く)。 C:の場合、通常は管理者として実行します。
Windowsの場合:
dir/ad/b/s
dir/a-d/b/s
Linuxでは、シンプルな
find . -printf '%y %p\n'
ディレクトリとファイルが混在したすべてのアイテムのリストが表示されます。この出力を一時ファイルに保存し、「d」で始まるすべての行を抽出できます。これらがディレクトリになります。 「f」で始まる行はファイルです。