Подтвердить что ты не робот

Рекурсивно Список всех каталогов и файлов

Я хотел бы получить следующий вывод.

Предположим, что структура каталогов в файловой системе выглядит так:

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

Выход из script должен выглядеть следующим образом:

Каталоги:

/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 в другой файл?

4b9b3361

Ответ 2

в оболочке:

find . -type d

предоставляет каталоги из текущего рабочего каталога и:

find . -type f

предоставляет файлы из текущего рабочего каталога.

Замените . на интересующую вас директорию.

Ответ 3

Bash/оболочка Linux

Каталоги:

find ./ -type d 

Файлы:

find ./ -type f 

Bash/Shell В файл

Каталоги:

find ./ -type d  > somefile.txt

Файлы:

find ./ -type f  > somefile.txt

Ответ 4

В Windows вы можете сделать это так же, как и большинство решений flexibile, которые позволяют вам дополнительно обрабатывать имена dir.

Вы используете 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!
)

Символично для файлов вы можете добавить шаблон в виде набора вместо точки, в вашем случае

 (*.*)

Ответ 5

В Windows:

dir/ad/b/s

dir/a-d/b/s

Ответ 6

В Linux простой

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

предоставит вам список всех содержащихся в нем элементов, в которых будут перемещены каталоги и файлы. Вы можете сохранить этот вывод во временном файле, а затем извлечь все строки, начинающиеся с 'd'; это будут каталоги. Строки, начинающиеся с "f", являются файлами.

Ответ 7

Это старый вопрос, но я подумал, что что-то добавить.

DIR не правильно перемещает все деревья каталогов, которые вы хотите, в частности, не те, что на C:. Он просто уступает местам из-за разных защит.

ATTRIB работает намного лучше, потому что он находит больше. (Почему эта разница? Почему MS делает одну полезную работу одним способом, а другая работает по-другому в этом отношении? Проклятый, если я знаю.) По моему опыту, самый эффективный способ справиться с этим, хотя это kludge, состоит в том, чтобы получить два списка:

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

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

и получить разницу между ними. Это различие - это каталоги на C: (кроме тех, которые слишком хорошо скрыты). Для C:, обычно я делаю это как администратор.