1

Я использую Linux для анализа структуры каталогов Windows. Структура является:

/Documents and settings
  /username1
    /My Documents
    ...
  /username2
    /My Documents
    ...
  ...

Какую команду можно выполнить, чтобы содержимое (и вложенные папки) всех каталогов "Мои документы" были перечислены следующим образом:

/Documents and Settings/username1/My Documents/filename
/Documents and Settings/username1/My Documents/subdir/filename
/Documents and Settings/username2/My Documents/filename

В основном существует множество пользователей, но почти ни у кого нет ничего в их папке «Мои документы». Я просто хочу найти и показать содержимое тех пользователей, у которых есть документы.

РЕДАКТИРОВАТЬ: Каждый каталог "имя пользователя" содержит много подкаталогов. Я только хочу перечислить дерево ниже папки "Мои документы", но сделать это для всех имен пользователей одновременно.

6 ответов6

2

Объединяя первые два ответа, используйте find и ls -R:

найти "/Documents and settings" -name "Мои документы" -exec ls -R {} \;

Это найдет все каталоги « Мои документы» и перечислит все, что находится под ними, с полными путями. Вам нужны кавычки, так как в именах каталогов есть пробелы.

Изменить: объяснение того, как это работает. Он начинается с /Documents and settings и ищет любой файл или каталог, который соответствует моим документам. Для каждого, который он находит, он заменяет путь на {} в ls. \; означает конец команды.

2

Просто чтобы добавить в коллекцию, ls -R на самом деле не выдает хороший вывод, поэтому вместо этого я использую команду дерева

find "/Documents and settings" -name "My Documents" -exec tree -f -i --noreport {} \;
1
ls -R path_to_your_dir

или же

ls -lR path_to_your_dir

для лучшего обзора

Тем не менее, лучший вид достигается с

find path_to_your_dir

ПРИМЕЧАНИЕ: -R означает рекурсивный

0

Вы можете использовать команду # find your_dir

0

Если вы хотите увидеть путь и не хотите иметь полный рекурсивный список -R, это, похоже, делает примерно то, что вы хотите, хотя это немного неуклюже:

find . -type d -name '*Documents' ! -empty | (while read d; do echo $d; ls -la $d; done)
0

Если вы хотите получить рекурсивный список файлов и папок в разделе « Документы и настройки» /«Пользователь» /«Мои документы»:

find Documents\ and\ Settings/*/My\ Documents -print

Если вам нужны только файлы и папки непосредственно в разделе «Документы и настройки» /«Пользователь» /«Мои документы»:

ls -dr Documents\ and\ Settings/*/My\ Documents/*

Первый будет содержать файл, такой как « Документы и настройки» /«Пользователь» /«Мои документы» /dir1 /file1), тогда как второй будет содержать список только « Документы и настройки» /«Пользователь» /«Мои документы» /dir1 ».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .